From 50f8494f4567d4318eecdd8b2f1475a0af2f7658 Mon Sep 17 00:00:00 2001 From: atheate Date: Wed, 26 Aug 2026 08:47:03 +0200 Subject: [PATCH 1/2] Fix #352: Json Deserialization performance improvement --- CLAUDE.md | 24 +- .../AnnotatingElementDeSerializer.cs | 908 ++-- .../AssociationDeSerializer.cs | 2021 ++++---- .../DependencyDeSerializer.cs | 1110 +++-- .../EnumerationDefinitionDeSerializer.cs | 2686 +++++----- .../FeatureDeSerializer.cs | 2681 +++++----- .../FeatureTypingDeSerializer.cs | 1172 +++-- .../AutoGenDeSerializer/FlowDeSerializer.cs | 3111 +++++++----- .../FramedConcernMembershipDeSerializer.cs | 1264 +++-- .../LiteralIntegerDeSerializer.cs | 2791 ++++++----- .../LiteralRationalDeSerializer.cs | 2791 ++++++----- .../MembershipDeSerializer.cs | 1262 +++-- .../MultiplicityRangeDeSerializer.cs | 2746 ++++++----- .../OwningMembershipDeSerializer.cs | 1180 +++-- .../ReferenceSubsettingDeSerializer.cs | 1102 +++-- .../RequirementUsageDeSerializer.cs | 4153 +++++++++------- .../SelectExpressionDeSerializer.cs | 2864 ++++++----- .../SubclassificationDeSerializer.cs | 1172 +++-- .../TextualRepresentationDeSerializer.cs | 1031 ++-- .../AutoGenDeSerializer/UsageDeSerializer.cs | 3672 ++++++++------ ...-dto-deserializer-uml-partial-template.hbs | 91 +- ...-deserialization-provider-uml-template.hbs | 8 +- ...ore-json-dto-deserializer-uml-template.hbs | 167 +- .../DeSerializerTestFixture.cs | 205 + .../AcceptActionUsageDeSerializer.cs | 4050 ++++++++------- .../ActionDefinitionDeSerializer.cs | 2940 ++++++----- .../ActionUsageDeSerializer.cs | 3958 ++++++++------- .../ActorMembershipDeSerializer.cs | 1328 ++--- .../AllocationDefinitionDeSerializer.cs | 3187 ++++++------ .../AllocationUsageDeSerializer.cs | 4335 +++++++++------- .../AnalysisCaseDefinitionDeSerializer.cs | 3199 ++++++------ .../AnalysisCaseUsageDeSerializer.cs | 4148 +++++++++------- .../AnnotatingElementDeSerializer.cs | 1064 ++-- .../AnnotationDeSerializer.cs | 1360 ++--- .../AssertConstraintUsageDeSerializer.cs | 4120 +++++++++------- .../AssignmentActionUsageDeSerializer.cs | 4046 ++++++++------- .../AssociationDeSerializer.cs | 2159 ++++---- .../AssociationStructureDeSerializer.cs | 2159 ++++---- .../AttributeDefinitionDeSerializer.cs | 2834 ++++++----- .../AttributeUsageDeSerializer.cs | 3846 ++++++++------- .../BehaviorDeSerializer.cs | 1918 ++++---- .../BindingConnectorAsUsageDeSerializer.cs | 4149 +++++++++------- .../BindingConnectorDeSerializer.cs | 3111 +++++++----- .../BooleanExpressionDeSerializer.cs | 2901 ++++++----- .../CalculationDefinitionDeSerializer.cs | 3060 +++++++----- .../CalculationUsageDeSerializer.cs | 4007 ++++++++------- .../CaseDefinitionDeSerializer.cs | 3163 ++++++------ .../CaseUsageDeSerializer.cs | 4108 +++++++++------- .../AutoGenDeSerializer/ClassDeSerializer.cs | 1887 +++---- .../ClassifierDeSerializer.cs | 1887 +++---- .../CollectExpressionDeSerializer.cs | 3038 +++++++----- .../CommentDeSerializer.cs | 1158 +++-- .../ConcernDefinitionDeSerializer.cs | 3213 ++++++------ .../ConcernUsageDeSerializer.cs | 4253 +++++++++------- .../ConjugatedPortDefinitionDeSerializer.cs | 2916 ++++++----- .../ConjugatedPortTypingDeSerializer.cs | 1364 ++--- .../ConjugationDeSerializer.cs | 1326 ++--- .../ConnectionDefinitionDeSerializer.cs | 3164 ++++++------ .../ConnectionUsageDeSerializer.cs | 4335 +++++++++------- .../ConnectorDeSerializer.cs | 3111 +++++++----- .../ConstraintDefinitionDeSerializer.cs | 2998 ++++++----- .../ConstraintUsageDeSerializer.cs | 4036 ++++++++------- .../ConstructorExpressionDeSerializer.cs | 2808 ++++++----- .../CrossSubsettingDeSerializer.cs | 1102 +++-- .../DataTypeDeSerializer.cs | 1887 +++---- .../DeSerializationProvider.cs | 8 +- .../DecisionNodeDeSerializer.cs | 3958 ++++++++------- .../DefinitionDeSerializer.cs | 2834 ++++++----- .../DependencyDeSerializer.cs | 1266 ++--- .../DifferencingDeSerializer.cs | 1254 +++-- .../DisjoiningDeSerializer.cs | 1324 ++--- .../DocumentationDeSerializer.cs | 1165 +++-- .../ElementFilterMembershipDeSerializer.cs | 1336 ++--- .../EndFeatureMembershipDeSerializer.cs | 1332 ++--- .../EnumerationDefinitionDeSerializer.cs | 2834 ++++++----- .../EnumerationUsageDeSerializer.cs | 3851 ++++++++------- .../EventOccurrenceUsageDeSerializer.cs | 3988 ++++++++------- .../ExhibitStateUsageDeSerializer.cs | 4130 +++++++++------- .../ExpressionDeSerializer.cs | 2895 ++++++----- .../FeatureChainExpressionDeSerializer.cs | 3072 +++++++----- .../FeatureChainingDeSerializer.cs | 1258 ++--- .../FeatureDeSerializer.cs | 2807 ++++++----- .../FeatureInvertingDeSerializer.cs | 1324 ++--- .../FeatureMembershipDeSerializer.cs | 1332 ++--- .../FeatureReferenceExpressionDeSerializer.cs | 2931 ++++++----- .../FeatureTypingDeSerializer.cs | 1324 ++--- .../FeatureValueDeSerializer.cs | 1464 +++--- .../AutoGenDeSerializer/FlowDeSerializer.cs | 3111 +++++++----- .../FlowDefinitionDeSerializer.cs | 3064 +++++++----- .../FlowEndDeSerializer.cs | 2681 +++++----- .../FlowUsageDeSerializer.cs | 4304 +++++++++------- .../ForLoopActionUsageDeSerializer.cs | 4050 ++++++++------- .../ForkNodeDeSerializer.cs | 3958 ++++++++------- .../FramedConcernMembershipDeSerializer.cs | 1404 +++--- .../FunctionDeSerializer.cs | 2003 ++++---- .../IfActionUsageDeSerializer.cs | 4058 ++++++++------- .../IncludeUseCaseUsageDeSerializer.cs | 4175 +++++++++------- .../IndexExpressionDeSerializer.cs | 2864 ++++++----- .../InteractionDeSerializer.cs | 2190 +++++---- .../InterfaceDefinitionDeSerializer.cs | 3154 ++++++------ .../InterfaceUsageDeSerializer.cs | 4335 +++++++++------- .../IntersectingDeSerializer.cs | 1254 +++-- .../InvariantDeSerializer.cs | 2943 ++++++----- .../InvocationExpressionDeSerializer.cs | 2970 ++++++----- .../ItemDefinitionDeSerializer.cs | 2882 ++++++----- .../ItemUsageDeSerializer.cs | 3983 ++++++++------- .../JoinNodeDeSerializer.cs | 3958 ++++++++------- .../LibraryPackageDeSerializer.cs | 1192 +++-- .../LiteralBooleanDeSerializer.cs | 2943 ++++++----- .../LiteralExpressionDeSerializer.cs | 2895 ++++++----- .../LiteralInfinityDeSerializer.cs | 2895 ++++++----- .../LiteralIntegerDeSerializer.cs | 2937 ++++++----- .../LiteralRationalDeSerializer.cs | 2937 ++++++----- .../LiteralStringDeSerializer.cs | 2951 ++++++----- .../MembershipDeSerializer.cs | 1410 +++--- .../MembershipExposeDeSerializer.cs | 1428 +++--- .../MembershipImportDeSerializer.cs | 1428 +++--- .../MergeNodeDeSerializer.cs | 3958 ++++++++------- .../MetaclassDeSerializer.cs | 1887 +++---- .../MetadataAccessExpressionDeSerializer.cs | 2931 ++++++----- .../MetadataDefinitionDeSerializer.cs | 2882 ++++++----- .../MetadataFeatureDeSerializer.cs | 2958 ++++++----- .../MetadataUsageDeSerializer.cs | 4101 ++++++++------- .../MultiplicityDeSerializer.cs | 2807 ++++++----- .../MultiplicityRangeDeSerializer.cs | 2902 ++++++----- .../NamespaceDeSerializer.cs | 1115 +++-- .../NamespaceExposeDeSerializer.cs | 1428 +++--- .../NamespaceImportDeSerializer.cs | 1428 +++--- .../NullExpressionDeSerializer.cs | 2895 ++++++----- .../ObjectiveMembershipDeSerializer.cs | 1328 ++--- .../OccurrenceDefinitionDeSerializer.cs | 2882 ++++++----- .../OccurrenceUsageDeSerializer.cs | 3958 ++++++++------- .../OperatorExpressionDeSerializer.cs | 3038 +++++++----- .../OwningMembershipDeSerializer.cs | 1332 ++--- .../PackageDeSerializer.cs | 1144 +++-- .../ParameterMembershipDeSerializer.cs | 1330 ++--- .../PartDefinitionDeSerializer.cs | 2882 ++++++----- .../PartUsageDeSerializer.cs | 4006 ++++++++------- .../PayloadFeatureDeSerializer.cs | 2681 +++++----- .../PerformActionUsageDeSerializer.cs | 3988 ++++++++------- .../PortConjugationDeSerializer.cs | 1328 ++--- .../PortDefinitionDeSerializer.cs | 2936 ++++++----- .../PortUsageDeSerializer.cs | 3958 ++++++++------- .../PredicateDeSerializer.cs | 2003 ++++---- .../RedefinitionDeSerializer.cs | 1324 ++--- .../ReferenceSubsettingDeSerializer.cs | 1254 +++-- .../ReferenceUsageDeSerializer.cs | 3846 ++++++++------- .../RenderingDefinitionDeSerializer.cs | 2911 ++++++----- .../RenderingUsageDeSerializer.cs | 4009 ++++++++------- ...irementConstraintMembershipDeSerializer.cs | 1404 +++--- .../RequirementDefinitionDeSerializer.cs | 3213 ++++++------ .../RequirementUsageDeSerializer.cs | 4257 +++++++++------- ...ementVerificationMembershipDeSerializer.cs | 1404 +++--- .../ResultExpressionMembershipDeSerializer.cs | 1330 ++--- .../ReturnParameterMembershipDeSerializer.cs | 1330 ++--- .../SatisfyRequirementUsageDeSerializer.cs | 4375 +++++++++-------- .../SelectExpressionDeSerializer.cs | 3038 +++++++----- .../SendActionUsageDeSerializer.cs | 4048 ++++++++------- .../SpecializationDeSerializer.cs | 1324 ++--- .../StakeholderMembershipDeSerializer.cs | 1330 ++--- .../StateDefinitionDeSerializer.cs | 3125 ++++++------ .../StateSubactionMembershipDeSerializer.cs | 1372 +++--- .../StateUsageDeSerializer.cs | 4098 ++++++++------- .../AutoGenDeSerializer/StepDeSerializer.cs | 2836 ++++++----- .../StructureDeSerializer.cs | 1887 +++---- .../SubclassificationDeSerializer.cs | 1320 ++--- .../SubjectMembershipDeSerializer.cs | 1330 ++--- .../SubsettingDeSerializer.cs | 1320 ++--- .../SuccessionAsUsageDeSerializer.cs | 4149 +++++++++------- .../SuccessionDeSerializer.cs | 3111 +++++++----- .../SuccessionFlowDeSerializer.cs | 3111 +++++++----- .../SuccessionFlowUsageDeSerializer.cs | 4304 +++++++++------- .../TerminateActionUsageDeSerializer.cs | 3878 ++++++++------- .../TextualRepresentationDeSerializer.cs | 1177 +++-- ...TransitionFeatureMembershipDeSerializer.cs | 1368 +++--- .../TransitionUsageDeSerializer.cs | 4137 +++++++++------- ...TriggerInvocationExpressionDeSerializer.cs | 3000 ++++++----- .../AutoGenDeSerializer/TypeDeSerializer.cs | 1858 ++++--- .../TypeFeaturingDeSerializer.cs | 1324 ++--- .../UnioningDeSerializer.cs | 1252 +++-- .../AutoGenDeSerializer/UsageDeSerializer.cs | 3846 ++++++++------- .../UseCaseDefinitionDeSerializer.cs | 3192 ++++++------ .../UseCaseUsageDeSerializer.cs | 4139 +++++++++------- .../VariantMembershipDeSerializer.cs | 1332 ++--- .../VerificationCaseDefinitionDeSerializer.cs | 3192 ++++++------ .../VerificationCaseUsageDeSerializer.cs | 4173 +++++++++------- .../ViewDefinitionDeSerializer.cs | 3003 ++++++----- .../ViewRenderingMembershipDeSerializer.cs | 1364 ++--- .../ViewUsageDeSerializer.cs | 4132 +++++++++------- .../ViewpointDefinitionDeSerializer.cs | 3242 ++++++------ .../ViewpointUsageDeSerializer.cs | 4278 +++++++++------- .../WhileLoopActionUsageDeSerializer.cs | 4050 ++++++++------- .../DeSerializeDelegate.cs | 55 + SysML2.NET.Serializer.Json/DeSerializer.cs | 718 ++- .../PIM/DataVersionDeSerializer.cs | 9 +- .../SysML2.NET.Serializer.Json.csproj | 1 + .../Utility/Utf8JsonReaderHelper.cs | 103 + 197 files changed, 279280 insertions(+), 215878 deletions(-) create mode 100644 SysML2.NET.Serializer.Json/DeSerializeDelegate.cs diff --git a/CLAUDE.md b/CLAUDE.md index eb38ce834..89387885d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,7 +29,29 @@ dotnet-coverage collect "dotnet test SysML2.NET.sln --no-build" -f xml -o covera Test framework: **NUnit**. Test classes use `[TestFixture]` and `[Test]` attributes. -**When writing or modifying unit tests** in any `*.Tests/` project: read `TESTING.md` at the repo root for the NUnit conventions (one `[Test]` per method-under-test, `Assert.That` everywhere, `Assert.EnterMultipleScope` only for consecutive asserts, mandatory positive + negative coverage, assertion idiom preferences, `Verify{MethodUnderTest}` naming). +## Reading `TESTING.md` is MANDATORY + +**Before you write or modify a single line in any `*.Tests/` project, you MUST `Read` `TESTING.md` at the repo root — in full, in the current session.** It is the authoritative, binding specification for every NUnit fixture in this solution. + +This applies to *every* test change, including ones that feel too small to warrant it: adding one `[Test]`, adding an assertion to an existing one, or creating a new fixture alongside a production change. There is no "obvious enough to skip it" case. + +**Do NOT author tests from memory, from the conventions of another .NET project, or by copying the shape of a neighbouring fixture.** Several fixtures in the repo predate `TESTING.md` and violate it — imitating them reproduces the violation. `TESTING.md` wins over any existing file you are looking at. + +The rules most often got wrong, all of which have caused review churn: + +| Rule | Section | Get-it-wrong symptom | +| --- | --- | --- | +| One `[Test]` per method-under-test, all scenarios packed inside | §2, §10 | a family of `…_WhenX_DoesY` tests that share setup | +| Name it `Verify{MethodUnderTest}` — no scenario suffix | §6, §10 | `Verify_that_foo_returns_bar`, `VerifyComputeFooWhenNull` | +| One fixture per production type, mirroring its namespace | §1 | a second `…AspectTestFixture` bolted on beside the real one | +| Every `[Test]` covers positive AND negative | §3, §10 | a happy-path-only test (very easy to do for an async overload) | +| `Assert.That` only — never `Assert.Throws` / `IsTrue` / `AreEqual` | §4 | legacy NUnit API | +| `Has.Count.EqualTo(n)`, not `result.Count, Is.EqualTo(n)` | §8 | asserting on `.Count` directly | +| `Assert.EnterMultipleScope` only around **2+ consecutive** asserts | §5, §10 | a scope wrapping one long fluent chain | +| Indexer / range over LINQ; `Is.SameAs` for POCO identity; `Is.EquivalentTo` when order is irrelevant | §8 | `.First()`, `.Last()`, `Is.EqualTo` on a POCO | +| Assert an out-of-scope `NotSupportedException` stub — don't implement it | §9 | scope creep out of the test project | + +The table is a checklist, **not a substitute for reading the file** — it omits the reference fixtures (§11) and the criteria for when separated `[Test]` methods *are* allowed (§2). ## Architecture diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs index 0e943d892..215c02d20 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Root.Annotations; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class AnnotatingElementDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class AnnotatingElementDeSerializer /// /// an instance of /// - internal static IAnnotatingElement DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAnnotatingElement DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnnotatingElementDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AnnotatingElementDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AnnotatingElement") - { - throw new InvalidOperationException($"The AnnotatingElementDeSerializer can only be used to deserialize objects of type IAnnotatingElement, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,521 +87,684 @@ internal static IAnnotatingElement DeSerialize(JsonElement jsonElement, Serializ /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AnnotatingElement json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - foreach (var arrayItem in annotatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.annotatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + annotatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotatedElement.Add(annotatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("annotation"u8)) + { + annotationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isLibraryElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningAnnotatingRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedElement"u8)) { - dtoInstance.owningMembership = null; + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) + { + dtoInstance.ownedElement.Add(ownedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!annotatedElementSeen) + { + logger.LogDebug("the annotatedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AnnotatingElement json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelationship = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AssociationDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AssociationDeSerializer.cs index d91f1390d..107ee0a70 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AssociationDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/AssociationDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Associations; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class AssociationDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class AssociationDeSerializer /// /// an instance of /// - internal static IAssociation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAssociation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssociationDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AssociationDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Association") - { - throw new InvalidOperationException($"The AssociationDeSerializer can only be used to deserialize objects of type IAssociation, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Associations.Association(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Association cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1241 +87,1519 @@ internal static IAssociation DeSerialize(JsonElement jsonElement, SerializationM /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + var aliasIdsSeen = false; + var associationEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Association json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Association cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("associationEnd"u8, out var associationEndProperty)) - { - foreach (var arrayItem in associationEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("associationEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationEndExternalIdProperty)) - { - var propertyValue = associationEndExternalIdProperty.GetString(); + associationEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationEndValue)) { - dtoInstance.associationEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.associationEnd.Add(associationEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the associationEnd Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceType = sourceTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("targetType"u8)) + { + targetTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.targetType.Add(targetTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - dtoInstance.OwningRelationship = null; + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) + { + dtoInstance.textualRepresentation.Add(textualRepresentationValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) - { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (!associationEndSeen) { - dtoInstance.sourceType = null; + logger.LogDebug("the associationEnd Json property was not found in the Association: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (!declaredShortNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!differencingTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the differencingType Json property was not found in the Association: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!directedFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the directedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Association: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Association json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Association cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/DependencyDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/DependencyDeSerializer.cs index 6438a9571..6ff2c2fe8 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/DependencyDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/DependencyDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Root.Dependencies; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class DependencyDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class DependencyDeSerializer /// /// an instance of /// - internal static IDependency DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDependency DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DependencyDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DependencyDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Dependency") - { - throw new InvalidOperationException($"The DependencyDeSerializer can only be used to deserialize objects of type IDependency, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Root.Dependencies.Dependency(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,649 +87,834 @@ internal static IDependency DeSerialize(JsonElement jsonElement, SerializationMo /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var clientSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var supplierSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Dependency json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("client"u8, out var clientProperty)) - { - foreach (var arrayItem in clientProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var clientExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = clientExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.Client.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("client"u8)) + { + clientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var clientValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.Client.Add(clientValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.OwningRelatedElement = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("supplier"u8, out var supplierProperty)) - { - foreach (var arrayItem in supplierProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("supplier"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var supplierExternalIdProperty)) - { - var propertyValue = supplierExternalIdProperty.GetString(); + supplierSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var supplierValue)) { - dtoInstance.Supplier.Add(Guid.Parse(propertyValue)); + dtoInstance.Supplier.Add(supplierValue); } } + + continue; } - } - else - { - logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!clientSeen) + { + logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!supplierSeen) + { + logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var clientSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var supplierSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the Dependency json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("client"u8, out var clientProperty)) - { - foreach (var arrayItem in clientProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var clientExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = clientExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.Client.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("client"u8)) + { + clientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var clientValue)) + { + dtoInstance.Client.Add(clientValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("supplier"u8, out var supplierProperty)) - { - foreach (var arrayItem in supplierProperty.EnumerateArray()) + if (reader.ValueTextEquals("supplier"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var supplierExternalIdProperty)) - { - var propertyValue = supplierExternalIdProperty.GetString(); + supplierSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var supplierValue)) { - dtoInstance.Supplier.Add(Guid.Parse(propertyValue)); + dtoInstance.Supplier.Add(supplierValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!clientSeen) + { + logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!supplierSeen) + { + logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs index 72d1a73e8..835a5d1ae 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Enumerations; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class EnumerationDefinitionDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class EnumerationDefinitionDeSerializer /// /// an instance of /// - internal static IEnumerationDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IEnumerationDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EnumerationDefinitionDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the EnumerationDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "EnumerationDefinition") - { - throw new InvalidOperationException($"The EnumerationDefinitionDeSerializer can only be used to deserialize objects of type IEnumerationDefinition, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1709 +87,2074 @@ internal static IEnumerationDefinition DeSerialize(JsonElement jsonElement, Seri /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var enumeratedValueSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EnumerationDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.ElementId = propertyValue; + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) + { + dtoInstance.documentation.Add(documentationValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = endFeatureExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("endFeature"u8)) + { + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("enumeratedValue"u8, out var enumeratedValueProperty)) - { - foreach (var arrayItem in enumeratedValueProperty.EnumerateArray()) + if (reader.ValueTextEquals("enumeratedValue"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var enumeratedValueExternalIdProperty)) - { - var propertyValue = enumeratedValueExternalIdProperty.GetString(); + enumeratedValueSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var enumeratedValueValue)) { - dtoInstance.enumeratedValue.Add(Guid.Parse(propertyValue)); + dtoInstance.enumeratedValue.Add(enumeratedValueValue); } } + + continue; } - } - else - { - logger.LogDebug("the enumeratedValue Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the usage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!enumeratedValueSeen) + { + logger.LogDebug("the enumeratedValue Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the variantMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the EnumerationDefinition json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureDeSerializer.cs index 82e40e6c3..286dfa5bb 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Core.Features; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FeatureDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FeatureDeSerializer /// /// an instance of /// - internal static IFeature DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeature DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Feature") - { - throw new InvalidOperationException($"The FeatureDeSerializer can only be used to deserialize objects of type IFeature, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Feature(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1604 +87,1986 @@ internal static IFeature DeSerialize(JsonElement jsonElement, SerializationModeK /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Feature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Feature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Feature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the type Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Feature json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs index 72aeb27b6..d35c75a2d 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Core.Features; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FeatureTypingDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FeatureTypingDeSerializer /// /// an instance of /// - internal static IFeatureTyping DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureTyping DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureTypingDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureTypingDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FeatureTyping") - { - throw new InvalidOperationException($"The FeatureTypingDeSerializer can only be used to deserialize objects of type IFeatureTyping, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureTyping(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,693 +87,872 @@ internal static IFeatureTyping DeSerialize(JsonElement jsonElement, Serializatio /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureTyping json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeature = null; + continue; } - else + + if (reader.ValueTextEquals("ownedElement"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.owningFeature = Guid.Parse(propertyValue); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.owningMembership = null; + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningFeature = owningFeatureValue; + } - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningMembership"u8)) + { + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelatedElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + typeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.Type = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) + { + dtoInstance.Type = typeValue; + } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - if (typeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.Type = Guid.Empty; - logger.LogDebug($"the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("typedFeature"u8)) { - if (typeProperty.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typeExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Type = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) - { - var propertyValue = typedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var typeSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the FeatureTyping json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - if (typeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.Type = Guid.Empty; - logger.LogDebug($"the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (typeProperty.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("type"u8)) + { + typeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typeExternalIdProperty.GetString(); + dtoInstance.Type = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Type = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) + { + dtoInstance.Type = typeValue; + } - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) - { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("typedFeature"u8)) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typedFeatureExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FlowDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FlowDeSerializer.cs index 5402cd391..e5afcd349 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FlowDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FlowDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Interactions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FlowDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FlowDeSerializer /// /// an instance of /// - internal static IFlow DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFlow DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FlowDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FlowDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Flow") - { - throw new InvalidOperationException($"The FlowDeSerializer can only be used to deserialize objects of type IFlow, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.Flow(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1916 +87,2314 @@ internal static IFlow DeSerialize(JsonElement jsonElement, SerializationModeKind /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var interactionSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var payloadFeatureSeen = false; + var payloadTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var sourceOutputFeatureSeen = false; + var targetFeatureSeen = false; + var targetInputFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Flow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.endOwningType = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("feature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Flow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Flow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("interaction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + interactionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var interactionValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.interaction.Add(interactionValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("interaction"u8, out var interactionProperty)) - { - foreach (var arrayItem in interactionProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var interactionExternalIdProperty)) - { - var propertyValue = interactionExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.interaction.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the interaction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.owningType = owningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("payloadFeature"u8)) { - dtoInstance.owningNamespace = null; + payloadFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadFeatureValue)) + { + dtoInstance.payloadFeature = payloadFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("payloadType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.payloadType.Add(payloadTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("sourceOutputFeature"u8)) { - dtoInstance.owningType = null; + sourceOutputFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceOutputFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceOutputFeatureValue)) + { + dtoInstance.sourceOutputFeature = sourceOutputFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("targetInputFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + targetInputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetInputFeature = null; } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("payloadFeature"u8, out var payloadFeatureProperty)) - { - if (payloadFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadFeature = null; - } - else - { - if (payloadFeatureProperty.TryGetProperty("@id"u8, out var payloadFeatureExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetInputFeatureValue)) { - var propertyValue = payloadFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.payloadFeature = Guid.Parse(propertyValue); - } + dtoInstance.targetInputFeature = targetInputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadType"u8, out var payloadTypeProperty)) - { - foreach (var arrayItem in payloadTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var payloadTypeExternalIdProperty)) - { - var propertyValue = payloadTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.payloadType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the payloadType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!chainingFeatureSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceOutputFeature"u8, out var sourceOutputFeatureProperty)) - { - if (sourceOutputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!connectorEndSeen) { - dtoInstance.sourceOutputFeature = null; + logger.LogDebug("the connectorEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!crossFeatureSeen) { - if (sourceOutputFeatureProperty.TryGetProperty("@id"u8, out var sourceOutputFeatureExternalIdProperty)) - { - var propertyValue = sourceOutputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceOutputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the crossFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceOutputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetInputFeature"u8, out var targetInputFeatureProperty)) - { - if (targetInputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.targetInputFeature = null; + logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!defaultFeaturingTypeSeen) { - if (targetInputFeatureProperty.TryGetProperty("@id"u8, out var targetInputFeatureExternalIdProperty)) - { - var propertyValue = targetInputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetInputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the defaultFeaturingType Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetInputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!differencingTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the differencingType Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!interactionSeen) + { + logger.LogDebug("the interaction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!payloadFeatureSeen) + { + logger.LogDebug("the payloadFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!payloadTypeSeen) + { + logger.LogDebug("the payloadType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!sourceOutputFeatureSeen) + { + logger.LogDebug("the sourceOutputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!targetInputFeatureSeen) + { + logger.LogDebug("the targetInputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the textualRepresentation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Flow: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the Flow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs index 14333553f..3c593d673 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Requirements; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FramedConcernMembershipDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FramedConcernMembershipDeSerializer /// /// an instance of /// - internal static IFramedConcernMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFramedConcernMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FramedConcernMembershipDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FramedConcernMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FramedConcernMembership") - { - throw new InvalidOperationException($"The FramedConcernMembershipDeSerializer can only be used to deserialize objects of type IFramedConcernMembership, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,712 +87,933 @@ internal static IFramedConcernMembership DeSerialize(JsonElement jsonElement, Se /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedConcernSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var referencedConcernSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FramedConcernMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) + { + dtoInstance.documentation.Add(documentationValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - if (ownedConcernProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.ownedConcern = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.ownedConcern property was not found in the Json. The value is set to Guid.Empty"); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("name"u8)) { - if (ownedConcernProperty.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) + { + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConcern = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) + ownedConcernSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedElementExternalIdProperty.GetString(); + dtoInstance.ownedConcern = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FramedConcernMembership.ownedConcern property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) + { + dtoInstance.ownedConcern = ownedConcernValue; + } - if (propertyValue != null) - { - dtoInstance.ownedMemberElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedElement"u8)) + { + ownedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.owner = null; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberShortName"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedMemberShortNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelatedElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the FramedConcernMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedConcern"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + referencedConcernSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.referencedConcern = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the FramedConcernMembership.referencedConcern property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedConcernValue)) + { + dtoInstance.referencedConcern = referencedConcernValue; + } - if (jsonElement.TryGetProperty("referencedConcern"u8, out var referencedConcernProperty)) - { - if (referencedConcernProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.referencedConcern = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.referencedConcern property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (referencedConcernProperty.TryGetProperty("@id"u8, out var referencedConcernExternalIdProperty)) - { - var propertyValue = referencedConcernExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.referencedConcern = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the referencedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!referencedConcernSeen) + { + logger.LogDebug("the referencedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FramedConcernMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.OwningRelatedElement = null; + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - dtoInstance.OwningRelationship = null; + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) + { + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs index ad986a061..15b23ccd8 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Expressions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class LiteralIntegerDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class LiteralIntegerDeSerializer /// /// an instance of /// - internal static ILiteralInteger DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralInteger DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralIntegerDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralIntegerDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "LiteralInteger") - { - throw new InvalidOperationException($"The LiteralIntegerDeSerializer can only be used to deserialize objects of type ILiteralInteger, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1683 +87,2083 @@ internal static ILiteralInteger DeSerialize(JsonElement jsonElement, Serializati /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInteger json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralInteger.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInteger.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + isEndSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningNamespace = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInteger.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralInteger.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("value"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Value = reader.GetInt32(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetInt32(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInteger json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("value"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.Value = reader.GetInt32(); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetInt32(); + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs index 384941b8e..5a3b1bef9 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Expressions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class LiteralRationalDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class LiteralRationalDeSerializer /// /// an instance of /// - internal static ILiteralRational DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralRational DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralRationalDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralRationalDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "LiteralRational") - { - throw new InvalidOperationException($"The LiteralRationalDeSerializer can only be used to deserialize objects of type ILiteralRational, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1683 +87,2083 @@ internal static ILiteralRational DeSerialize(JsonElement jsonElement, Serializat /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralRational json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralRational.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralRational.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + isEndSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningNamespace = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralRational.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralRational.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("value"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Value = reader.GetDouble(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetDouble(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralRational json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("value"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.Value = reader.GetDouble(); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetDouble(); + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MembershipDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MembershipDeSerializer.cs index 741e8aa49..c64d47158 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MembershipDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MembershipDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Root.Namespaces; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class MembershipDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class MembershipDeSerializer /// /// an instance of /// - internal static IMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MembershipDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Membership") - { - throw new InvalidOperationException($"The MembershipDeSerializer can only be used to deserialize objects of type IMembership, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.Membership(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,712 +87,933 @@ internal static IMembership DeSerialize(JsonElement jsonElement, SerializationMo /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var memberElementSeen = false; + var memberElementIdSeen = false; + var memberNameSeen = false; + var membershipOwningNamespaceSeen = false; + var memberShortNameSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Membership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) + { + dtoInstance.documentation.Add(documentationValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberElement"u8, out var memberElementProperty)) - { - if (memberElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.MemberElement = Guid.Empty; - logger.LogDebug($"the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("memberElement"u8)) { - if (memberElementProperty.TryGetProperty("@id"u8, out var memberElementExternalIdProperty)) + memberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = memberElementExternalIdProperty.GetString(); + dtoInstance.MemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.MemberElement = Guid.Parse(propertyValue); + logger.LogDebug("the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberElementValue)) + { + dtoInstance.MemberElement = memberElementValue; + } - if (jsonElement.TryGetProperty("memberElementId"u8, out var memberElementIdProperty)) - { - var propertyValue = memberElementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("memberElementId"u8)) { - dtoInstance.memberElementId = propertyValue; - } - } - else - { - logger.LogDebug("the memberElementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + memberElementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("memberName"u8, out var memberNameProperty)) - { - dtoInstance.MemberName = memberNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + var memberElementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (memberElementIdValue != null) + { + dtoInstance.memberElementId = memberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("memberName"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the Membership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + memberNameSeen = true; + reader.Read(); + + dtoInstance.MemberName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Membership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberShortName"u8, out var memberShortNameProperty)) - { - dtoInstance.MemberShortName = memberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("memberShortName"u8)) + { + memberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + dtoInstance.MemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementSeen) + { + logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementIdSeen) + { + logger.LogDebug("the memberElementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberNameSeen) + { + logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberShortNameSeen) + { + logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var memberElementSeen = false; + var memberNameSeen = false; + var memberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Membership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberElement"u8, out var memberElementProperty)) - { - if (memberElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.MemberElement = Guid.Empty; - logger.LogDebug($"the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("isImplied"u8)) { - if (memberElementProperty.TryGetProperty("@id"u8, out var memberElementExternalIdProperty)) - { - var propertyValue = memberElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.MemberElement = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberName"u8, out var memberNameProperty)) - { - dtoInstance.MemberName = memberNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("memberShortName"u8, out var memberShortNameProperty)) - { - dtoInstance.MemberShortName = memberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("memberElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + memberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.MemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberElementValue)) + { + dtoInstance.MemberElement = memberElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("memberName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + memberNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.MemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("memberShortName"u8)) { - dtoInstance.OwningRelatedElement = null; + memberShortNameSeen = true; + reader.Read(); + + dtoInstance.MemberShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - dtoInstance.OwningRelationship = null; + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) + { + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementSeen) + { + logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberNameSeen) + { + logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberShortNameSeen) + { + logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs index f1d6a5e2c..e861353b4 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Multiplicities; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class MultiplicityRangeDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class MultiplicityRangeDeSerializer /// /// an instance of /// - internal static IMultiplicityRange DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMultiplicityRange DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MultiplicityRangeDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MultiplicityRangeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "MultiplicityRange") - { - throw new InvalidOperationException($"The MultiplicityRangeDeSerializer can only be used to deserialize objects of type IMultiplicityRange, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1673 +87,2058 @@ internal static IMultiplicityRange DeSerialize(JsonElement jsonElement, Serializ /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var boundSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var lowerBoundSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var upperBoundSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MultiplicityRange json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("bound"u8, out var boundProperty)) - { - foreach (var arrayItem in boundProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var boundExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = boundExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.bound.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the bound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("bound"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + boundSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var boundValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.bound.Add(boundValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MultiplicityRange.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the MultiplicityRange.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + isConstantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("lowerBound"u8, out var lowerBoundProperty)) - { - if (lowerBoundProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.lowerBound = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("lowerBound"u8)) { - if (lowerBoundProperty.TryGetProperty("@id"u8, out var lowerBoundExternalIdProperty)) + lowerBoundSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = lowerBoundExternalIdProperty.GetString(); + dtoInstance.lowerBound = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var lowerBoundValue)) + { + dtoInstance.lowerBound = lowerBoundValue; + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.lowerBound = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the lowerBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.multiplicity = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("type"u8)) + { + typeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("upperBound"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + upperBoundSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + dtoInstance.upperBound = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the MultiplicityRange.upperBound property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var upperBoundValue)) + { + dtoInstance.upperBound = upperBoundValue; + } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("upperBound"u8, out var upperBoundProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (upperBoundProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.upperBound = Guid.Empty; - logger.LogDebug($"the MultiplicityRange.upperBound property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); } - else + if (!boundSeen) { - if (upperBoundProperty.TryGetProperty("@id"u8, out var upperBoundExternalIdProperty)) - { - var propertyValue = upperBoundExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.upperBound = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the bound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the upperBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!lowerBoundSeen) + { + logger.LogDebug("the lowerBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!upperBoundSeen) + { + logger.LogDebug("the upperBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + } } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the MultiplicityRange json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs index 608e67916..4867cde8c 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Root.Namespaces; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class OwningMembershipDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class OwningMembershipDeSerializer /// /// an instance of /// - internal static IOwningMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IOwningMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OwningMembershipDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the OwningMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "OwningMembership") - { - throw new InvalidOperationException($"The OwningMembershipDeSerializer can only be used to deserialize objects of type IOwningMembership, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,669 +87,876 @@ internal static IOwningMembership DeSerialize(JsonElement jsonElement, Serializa /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var membershipOwningNamespaceSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OwningMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) + { + dtoInstance.documentation.Add(documentationValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the OwningMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) - { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + isLibraryElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedElementExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the OwningMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElement"u8, out var ownedMemberElementProperty)) - { - if (ownedMemberElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedMemberElement = Guid.Empty; - logger.LogDebug($"the OwningMembership.ownedMemberElement property was not found in the Json. The value is set to Guid.Empty"); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedMemberElementProperty.TryGetProperty("@id"u8, out var ownedMemberElementExternalIdProperty)) - { - var propertyValue = ownedMemberElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedMemberElement = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedMemberElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ownedMemberElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedElement"u8)) + { + ownedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMemberElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + ownedMemberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ownedMemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the OwningMembership.ownedMemberElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberElementValue)) + { + dtoInstance.ownedMemberElement = ownedMemberElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.owner = null; + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedMemberNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } - } + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMemberShortName"u8)) { - dtoInstance.owningMembership = null; + ownedMemberShortNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.OwningRelatedElement = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementSeen) + { + logger.LogDebug("the ownedMemberElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the OwningMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs index c02029ed9..7d1757582 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Core.Features; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class ReferenceSubsettingDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class ReferenceSubsettingDeSerializer /// /// an instance of /// - internal static IReferenceSubsetting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IReferenceSubsetting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReferenceSubsettingDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ReferenceSubsettingDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ReferenceSubsetting") - { - throw new InvalidOperationException($"The ReferenceSubsettingDeSerializer can only be used to deserialize objects of type IReferenceSubsetting, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,644 +87,823 @@ internal static IReferenceSubsetting DeSerialize(JsonElement jsonElement, Serial /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var referencedFeatureSeen = false; + var referencingFeatureSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReferenceSubsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.OwningRelatedElement = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("referencedFeature"u8, out var referencedFeatureProperty)) - { - if (referencedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.ReferencedFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedFeature"u8)) { - if (referencedFeatureProperty.TryGetProperty("@id"u8, out var referencedFeatureExternalIdProperty)) + referencedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = referencedFeatureExternalIdProperty.GetString(); + dtoInstance.ReferencedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ReferencedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedFeatureValue)) + { + dtoInstance.ReferencedFeature = referencedFeatureValue; + } - if (jsonElement.TryGetProperty("referencingFeature"u8, out var referencingFeatureProperty)) - { - if (referencingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.referencingFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.referencingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("referencingFeature"u8)) { - if (referencingFeatureProperty.TryGetProperty("@id"u8, out var referencingFeatureExternalIdProperty)) + referencingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = referencingFeatureExternalIdProperty.GetString(); + dtoInstance.referencingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.referencingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.referencingFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencingFeatureValue)) + { + dtoInstance.referencingFeature = referencingFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the referencingFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencedFeatureSeen) + { + logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencingFeatureSeen) + { + logger.LogDebug("the referencingFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var referencedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the ReferenceSubsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("referencedFeature"u8, out var referencedFeatureProperty)) - { - if (referencedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) + { + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.ReferencedFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("referencedFeature"u8)) { - if (referencedFeatureProperty.TryGetProperty("@id"u8, out var referencedFeatureExternalIdProperty)) + referencedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = referencedFeatureExternalIdProperty.GetString(); + dtoInstance.ReferencedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ReferencedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedFeatureValue)) + { + dtoInstance.ReferencedFeature = referencedFeatureValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencedFeatureSeen) + { + logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs index 8db6344f1..5483a9eff 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Requirements; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class RequirementUsageDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class RequirementUsageDeSerializer /// /// an instance of /// - internal static IRequirementUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRequirementUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementUsageDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RequirementUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "RequirementUsage") - { - throw new InvalidOperationException($"The RequirementUsageDeSerializer can only be used to deserialize objects of type IRequirementUsage, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,2565 +87,3101 @@ internal static IRequirementUsage DeSerialize(JsonElement jsonElement, Serializa /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var requirementDefinitionSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); - } - } + throw new JsonException("Expected a property name in the RequirementUsage json object."); } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) - { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } - } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) + crossFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) { - var propertyValue = directedUsageExternalIdProperty.GetString(); + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the RequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningMembership = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("reqId"u8)) { - dtoInstance.owningNamespace = null; + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; - } - else + if (reader.ValueTextEquals("requirementDefinition"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + requirementDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.requirementDefinition = null; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; - } - else - { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requirementDefinitionValue)) { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + dtoInstance.requirementDefinition = requirementDefinitionValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningUsageExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) { - var propertyValue = parameterExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + dtoInstance.result = resultValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("requirementDefinition"u8, out var requirementDefinitionProperty)) - { - if (requirementDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.requirementDefinition = null; - } - else - { - if (requirementDefinitionProperty.TryGetProperty("@id"u8, out var requirementDefinitionExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = requirementDefinitionExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requirementDefinition = Guid.Parse(propertyValue); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requirementDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the RequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); - } + dtoInstance.subjectParameter = subjectParameterValue; } - } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the RequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("text"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.text.Add(textValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - var propertyValue = arrayItem.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.text.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the text Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!actorParameterSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the actorParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!assumedConstraintSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the assumedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!crossFeatureSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the crossFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!differencingTypeSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the differencingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (!directedUsageSeen) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + logger.LogDebug("the directedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!directionSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (!documentationSeen) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + logger.LogDebug("the documentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (!elementIdSeen) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!requirementDefinitionSeen) + { + logger.LogDebug("the requirementDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + var reqIdSeen = false; - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + throw new JsonException("Expected a property name in the RequirementUsage json object."); } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.OwningRelationship = null; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("elementId"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isComposite"u8)) + { + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isConstant"u8)) + { + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) + { + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isIndividual"u8)) + { + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs index 2ea8b83d2..0656b7055 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Expressions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class SelectExpressionDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class SelectExpressionDeSerializer /// /// an instance of /// - internal static ISelectExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISelectExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SelectExpressionDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SelectExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SelectExpression") - { - throw new InvalidOperationException($"The SelectExpressionDeSerializer can only be used to deserialize objects of type ISelectExpression, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1738 +87,2143 @@ internal static ISelectExpression DeSerialize(JsonElement jsonElement, Serializa /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SelectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = argumentExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.argument.Add(argumentValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SelectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the SelectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inputExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SelectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the SelectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) - { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + dtoInstance.name = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("operator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the SelectExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the SelectExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); } - else + if (!argumentSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the argument Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the result Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (!crossFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the crossFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the type Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SelectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs index 91df7425e..fd61a4beb 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Core.Classifiers; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class SubclassificationDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class SubclassificationDeSerializer /// /// an instance of /// - internal static ISubclassification DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISubclassification DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubclassificationDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SubclassificationDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Subclassification") - { - throw new InvalidOperationException($"The SubclassificationDeSerializer can only be used to deserialize objects of type ISubclassification, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Core.Classifiers.Subclassification(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,693 +87,872 @@ internal static ISubclassification DeSerialize(JsonElement jsonElement, Serializ /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningClassifierSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var subclassifierSeen = false; + var superclassifierSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Subclassification json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningClassifier"u8, out var owningClassifierProperty)) - { - if (owningClassifierProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningClassifier = null; + continue; } - else + + if (reader.ValueTextEquals("ownedElement"u8)) { - if (owningClassifierProperty.TryGetProperty("@id"u8, out var owningClassifierExternalIdProperty)) - { - var propertyValue = owningClassifierExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.owningClassifier = Guid.Parse(propertyValue); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the owningClassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.OwningRelatedElement = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningClassifier"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + owningClassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningClassifier = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningClassifierValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.owningClassifier = owningClassifierValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningMembership"u8)) + { + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedElement.Add(relatedElementValue); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("subclassifier"u8, out var subclassifierProperty)) - { - if (subclassifierProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.Subclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subclassifier"u8)) { - if (subclassifierProperty.TryGetProperty("@id"u8, out var subclassifierExternalIdProperty)) + subclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subclassifierExternalIdProperty.GetString(); + dtoInstance.Subclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Subclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subclassifierValue)) + { + dtoInstance.Subclassifier = subclassifierValue; + } - if (jsonElement.TryGetProperty("superclassifier"u8, out var superclassifierProperty)) - { - if (superclassifierProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.Superclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("superclassifier"u8)) { - if (superclassifierProperty.TryGetProperty("@id"u8, out var superclassifierExternalIdProperty)) + superclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = superclassifierExternalIdProperty.GetString(); + dtoInstance.Superclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Superclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var superclassifierValue)) + { + dtoInstance.Superclassifier = superclassifierValue; + } + + continue; } - } - else - { - logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningClassifierSeen) + { + logger.LogDebug("the owningClassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!subclassifierSeen) + { + logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!superclassifierSeen) + { + logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var subclassifierSeen = false; + var superclassifierSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the Subclassification json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subclassifier"u8, out var subclassifierProperty)) - { - if (subclassifierProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.Subclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (subclassifierProperty.TryGetProperty("@id"u8, out var subclassifierExternalIdProperty)) + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("subclassifier"u8)) + { + subclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subclassifierExternalIdProperty.GetString(); + dtoInstance.Subclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Subclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subclassifierValue)) + { + dtoInstance.Subclassifier = subclassifierValue; + } - if (jsonElement.TryGetProperty("superclassifier"u8, out var superclassifierProperty)) - { - if (superclassifierProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.Superclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("superclassifier"u8)) { - if (superclassifierProperty.TryGetProperty("@id"u8, out var superclassifierExternalIdProperty)) + superclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = superclassifierExternalIdProperty.GetString(); + dtoInstance.Superclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Superclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var superclassifierValue)) + { + dtoInstance.Superclassifier = superclassifierValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!subclassifierSeen) + { + logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!superclassifierSeen) + { + logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs index 67cd1fafe..47dcef81e 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Root.Annotations; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class TextualRepresentationDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class TextualRepresentationDeSerializer /// /// an instance of /// - internal static ITextualRepresentation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITextualRepresentation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TextualRepresentationDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TextualRepresentationDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "TextualRepresentation") - { - throw new InvalidOperationException($"The TextualRepresentationDeSerializer can only be used to deserialize objects of type ITextualRepresentation, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,582 +87,768 @@ internal static ITextualRepresentation DeSerialize(JsonElement jsonElement, Seri /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var annotationSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var languageSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var representedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TextualRepresentation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = annotationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the annotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.Body = propertyValue; + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("annotation"u8)) + { + annotationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("body"u8)) { - dtoInstance.ElementId = propertyValue; + bodySeen = true; + reader.Read(); + + var bodyValue = reader.GetString(); + + if (bodyValue != null) + { + dtoInstance.Body = bodyValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("language"u8, out var languageProperty)) - { - var propertyValue = languageProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.Language = propertyValue; + continue; } - } - else - { - logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("language"u8)) + { + languageSeen = true; + reader.Read(); + + var languageValue = reader.GetString(); + + if (languageValue != null) + { + dtoInstance.Language = languageValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningAnnotatingRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedElement"u8)) { - dtoInstance.owningMembership = null; + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) + { + dtoInstance.ownedElement.Add(ownedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("representedElement"u8, out var representedElementProperty)) - { - if (representedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.representedElement = Guid.Empty; - logger.LogDebug($"the TextualRepresentation.representedElement property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("representedElement"u8)) { - if (representedElementProperty.TryGetProperty("@id"u8, out var representedElementExternalIdProperty)) + representedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = representedElementExternalIdProperty.GetString(); + dtoInstance.representedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.representedElement = Guid.Parse(propertyValue); + logger.LogDebug("the TextualRepresentation.representedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var representedElementValue)) + { + dtoInstance.representedElement = representedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the representedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!languageSeen) + { + logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!representedElementSeen) + { + logger.LogDebug("the representedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var languageSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the TextualRepresentation json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.Body = propertyValue; - } - } - else - { - logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("body"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + bodySeen = true; + reader.Read(); + + var bodyValue = reader.GetString(); + + if (bodyValue != null) + { + dtoInstance.Body = bodyValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("language"u8, out var languageProperty)) - { - var propertyValue = languageProperty.GetString(); + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.Language = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelationship = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("language"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + languageSeen = true; + reader.Read(); + + var languageValue = reader.GetString(); + + if (languageValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Language = languageValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!languageSeen) + { + logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/UsageDeSerializer.cs b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/UsageDeSerializer.cs index a8e756ea0..0afad1307 100644 --- a/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/UsageDeSerializer.cs +++ b/SysML2.NET.CodeGenerator.Tests/Expected/UML/Core/AutoGenDeSerializer/UsageDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class UsageDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class UsageDeSerializer /// /// an instance of /// - internal static IUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UsageDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the UsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Usage") - { - throw new InvalidOperationException($"The UsageDeSerializer can only be used to deserialize objects of type IUsage, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,2296 +87,2779 @@ internal static IUsage DeSerialize(JsonElement jsonElement, SerializationModeKin /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var definitionSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Usage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("definition"u8, out var definitionProperty)) - { - foreach (var arrayItem in definitionProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var definitionExternalIdProperty)) - { - var propertyValue = definitionExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.definition.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the definition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("definition"u8)) + { + definitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var definitionValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.definition.Add(definitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Usage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Usage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("multiplicity"u8)) { - dtoInstance.multiplicity = null; + multiplicitySeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - else + + if (reader.ValueTextEquals("name"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) + { + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.nestedAction.Add(nestedActionValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningDefinition = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningMembership = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("variantMembership"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Usage: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!crossFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the crossFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the usage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!declaredShortNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!definitionSeen) + { + logger.LogDebug("the definition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the variantMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the Usage json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.CodeGenerator/Templates/Uml/Partials/core-json-dto-deserializer-uml-partial-template.hbs b/SysML2.NET.CodeGenerator/Templates/Uml/Partials/core-json-dto-deserializer-uml-partial-template.hbs index cb9abec40..caa5a988a 100644 --- a/SysML2.NET.CodeGenerator/Templates/Uml/Partials/core-json-dto-deserializer-uml-partial-template.hbs +++ b/SysML2.NET.CodeGenerator/Templates/Uml/Partials/core-json-dto-deserializer-uml-partial-template.hbs @@ -1,117 +1,108 @@ -if (jsonElement.TryGetProperty("{{ property.Name }}"u8, out var {{ property.Name }}Property)) +if (reader.ValueTextEquals("{{ property.Name }}"u8)) { +{{ property.Name }}Seen = true; +reader.Read(); + {{#if (Property.QueryIsReferenceProperty property)}} {{#if (Property.QueryIsEnumerable property)}} - foreach (var arrayItem in {{ property.Name }}Property.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var {{ property.Name }}ExternalIdProperty)) - { - var propertyValue = {{ property.Name }}ExternalIdProperty.GetString(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.{{Property.WritePropertyName property}}.Add(Guid.Parse(propertyValue)); - } + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var {{ property.Name }}Value)) + { + dtoInstance.{{Property.WritePropertyName property}}.Add({{ property.Name }}Value); } } {{ else }} - if ({{ property.Name }}Property.ValueKind == JsonValueKind.Null) + if (reader.TokenType == JsonTokenType.Null) { {{#if (Property.QueryIsNullable property) }} dtoInstance.{{Property.WritePropertyName property}} = null; {{else}} dtoInstance.{{Property.WritePropertyName property}} = Guid.Empty; - logger.LogDebug($"the {{ classContext.Name }}.{{Property.WritePropertyName property}} property was not found in the Json. The value is set to Guid.Empty"); + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the {{ classContext.Name }}.{{Property.WritePropertyName property}} property was not found in the Json. The value is set to Guid.Empty"); + } {{/if}} } - else - { - if ({{ property.Name }}Property.TryGetProperty("@id"u8, out var {{ property.Name }}ExternalIdProperty)) - { - var propertyValue = {{ property.Name }}ExternalIdProperty.GetString(); - - if (propertyValue != null) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var {{ property.Name }}Value)) { - dtoInstance.{{Property.WritePropertyName property}} = Guid.Parse(propertyValue); - } - } + dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Value; } {{/if}} {{ else }} {{#if (Property.QueryIsEnumerable property)}} - foreach (var arrayItem in {{ property.Name }}Property.EnumerateArray()) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { {{#if (Property.QueryIsBool property )}} - var propertyValue = arrayItem.GetBoolean(); - - if (propertyValue != null) - { - dtoInstance.{{Property.WritePropertyName property}}.Add(propertyValue); - } + dtoInstance.{{Property.WritePropertyName property}}.Add(reader.GetBoolean()); {{else if (Property.QueryIsEnum property )}} throw new NotImplementedException("Enumerable Enum - {{ classContext.Name }}.{{property.Name}} is not yet supported"); {{else if (Property.QueryIsNumeric property )}} {{#if (Property.QueryIsInteger property) }} - dtoInstance.{{Property.WritePropertyName property}}.Add(arrayItem.GetInt32()); + dtoInstance.{{Property.WritePropertyName property}}.Add(reader.GetInt32()); {{else if (Property.QueryIsDouble property) }} - dtoInstance.{{Property.WritePropertyName property}}.Add(arrayItem.GetDouble()); + dtoInstance.{{Property.WritePropertyName property}}.Add(reader.GetDouble()); {{ else }} throw new NotImplementedException("Enumerable Double - {{ classContext.Name }}.{{property.Name}} is not yet supported"); {{/if}} {{else}} - var propertyValue = arrayItem.GetString(); + var {{ property.Name }}Value = reader.GetString(); - if (propertyValue != null) + if ({{ property.Name }}Value != null) { - dtoInstance.{{Property.WritePropertyName property}}.Add(propertyValue); + dtoInstance.{{Property.WritePropertyName property}}.Add({{ property.Name }}Value); } {{/if}} } {{ else if (Property.QueryIsNullable property) }} {{#if (Property.QueryIsBool property )}} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetBoolean(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetBoolean(); {{else if (Property.QueryIsEnum property )}} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Type.Name }}DeSerializer.DeserializeNullable({{ property.Name }}Property.GetString()); + dtoInstance.{{Property.WritePropertyName property}} = {{ property.Type.Name }}DeSerializer.DeserializeNullable(reader.GetString()); {{else if (Property.QueryIsNumeric property )}} {{#if (Property.QueryIsInteger property) }} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetInt32(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetInt32(); {{else if (Property.QueryIsDouble property) }} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetDouble(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetDouble(); {{ else }} new NotImplementedException("nullable - {{ classContext.Name }}.{{property.Name}} is not yet supported"); {{/if}} {{else}} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetString(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetString(); {{/if}} {{ else if (Property.QueryIsScalar property) }} {{#if (Property.QueryIsBool property )}} - if ({{ property.Name }}Property.ValueKind != JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.Null) { - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetBoolean(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetBoolean(); } {{else if (Property.QueryIsEnum property )}} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Type.Name }}DeSerializer.Deserialize({{ property.Name }}Property.GetString()); + dtoInstance.{{Property.WritePropertyName property}} = {{ property.Type.Name }}DeSerializer.Deserialize(reader.GetString()); {{else if (Property.QueryIsNumeric property )}} {{#if (Property.QueryIsInteger property) }} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetInt32(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetInt32(); {{else if (Property.QueryIsDouble property) }} - dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Property.GetDouble(); + dtoInstance.{{Property.WritePropertyName property}} = reader.GetDouble(); {{ else }} new NotImplementedException("Scalar - {{ classContext.Name }}.{{property.Name}} is not yet supported"); {{/if}} {{else}} - var propertyValue = {{property.Name }}Property.GetString(); + var {{ property.Name }}Value = reader.GetString(); - if (propertyValue != null) + if ({{ property.Name }}Value != null) { - dtoInstance.{{Property.WritePropertyName property}} = propertyValue; + dtoInstance.{{Property.WritePropertyName property}} = {{ property.Name }}Value; } {{/if}} {{/if}} {{/if}} -} -else -{ -logger.LogDebug("the {{ property.Name }} Json property was not found in the {{ classContext.Name }}: {Id}", dtoInstance.Id); + +continue; } diff --git a/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserialization-provider-uml-template.hbs b/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserialization-provider-uml-template.hbs index 2c37f084e..31ed9118f 100644 --- a/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserialization-provider-uml-template.hbs +++ b/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserialization-provider-uml-template.hbs @@ -41,7 +41,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO /// /// a dictionary that provides delegates for deserialization /// - private static readonly Dictionary> DeSerializerActionMap = new Dictionary> + private static readonly Dictionary DeSerializerActionMap = new Dictionary { {{#each this as | class |}} { "{{ class.Name }}", {{ class.Name }}DeSerializer.DeSerialize }, @@ -49,19 +49,19 @@ namespace SysML2.NET.Serializer.Json.Core.DTO }; /// - /// Provides the delegate for the + /// Provides the for the /// that is to be deserialized /// /// /// The name of the subject that is to be serialized /// /// - /// A Delegate of + /// A /// /// /// Thrown when the is not supported. /// - internal static Func Provide(string typeName) + internal static DeSerializeDelegate Provide(string typeName) { if (!DeSerializerActionMap.TryGetValue(typeName, out var func)) { diff --git a/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserializer-uml-template.hbs b/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserializer-uml-template.hbs index c2b563f6f..f7afbcf71 100644 --- a/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserializer-uml-template.hbs +++ b/SysML2.NET.CodeGenerator/Templates/Uml/core-json-dto-deserializer-uml-template.hbs @@ -1,4 +1,4 @@ -// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- // // // Copyright 2022-2026 Starion Group S.A. @@ -26,13 +26,14 @@ namespace SysML2.NET.Serializer.Json.Core.DTO { using System; using System.Text.Json; - + using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; - + using SysML2.NET.Common; using SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class {{ this.Name }}DeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,65 +61,76 @@ namespace SysML2.NET.Serializer.Json.Core.DTO /// /// an instance of /// - internal static I{{ this.Name }} DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static I{{ this.Name }} DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("{{ this.Name }}DeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the {{ this.Name }}DeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "{{ this.Name }}") - { - throw new InvalidOperationException($"The {{ this.Name }}DeSerializer can only be used to deserialize objects of type I{{ this.Name }}, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}.{{ this.Name }}(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the {{ this.Name }} cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if(deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; } - + /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}.{{ this.Name }} dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}.{{ this.Name }} dtoInstance, ref Utf8JsonReader reader, ILogger logger) { {{#with this as |class| }} - {{ #each (Class.QueryAllProperties this) as | property | }} + {{ #each (Class.QueryAllProperties this) as | property | }} + {{#unless this.IsTransient}} + {{#unless (Property.IsPropertyRedefinedInClass this class)}} + var {{ property.Name }}Seen = false; + {{/unless}} + {{/unless}} + {{/each}} + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the {{ class.Name }} json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the {{ class.Name }} cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + {{ #each (Class.QueryAllProperties this) as | property | }} {{#unless this.IsTransient}} {{#unless (Property.IsPropertyRedefinedInClass this class)}} {{#withPropertyClassContext property class}} @@ -125,25 +139,74 @@ namespace SysML2.NET.Serializer.Json.Core.DTO {{/unless}} {{/unless}} {{/each}} + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + {{ #each (Class.QueryAllProperties this) as | property | }} + {{#unless this.IsTransient}} + {{#unless (Property.IsPropertyRedefinedInClass this class)}} + if (!{{ property.Name }}Seen) + { + logger.LogDebug("the {{ property.Name }} Json property was not found in the {{ class.Name }}: {Id}", dtoInstance.Id); + } + {{/unless}} + {{/unless}} + {{/each}} + } {{/with}} } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}.{{ this.Name }} dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.{{ #NamedElement.WriteFullyQualifiedNameSpace this }}.{{ this.Name }} dtoInstance, ref Utf8JsonReader reader, ILogger logger) { {{#with this as |class| }} + {{ #each (Class.QueryAllProperties this) as | property | }} + {{#unless this.IsTransient}} + {{#unless this.IsDerived}} + {{#unless (Property.IsPropertyRedefinedInClass this class)}} + var {{ property.Name }}Seen = false; + {{/unless}} + {{/unless}} + {{/unless}} + {{/each}} + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the {{ class.Name }} json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the {{ class.Name }} cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + {{ #each (Class.QueryAllProperties this) as | property | }} {{#unless this.IsTransient}} {{#unless this.IsDerived}} @@ -155,6 +218,26 @@ namespace SysML2.NET.Serializer.Json.Core.DTO {{/unless}} {{/unless}} {{/each}} + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + {{ #each (Class.QueryAllProperties this) as | property | }} + {{#unless this.IsTransient}} + {{#unless this.IsDerived}} + {{#unless (Property.IsPropertyRedefinedInClass this class)}} + if (!{{ property.Name }}Seen) + { + logger.LogDebug("the {{ property.Name }} Json property was not found in the {{ class.Name }}: {Id}", dtoInstance.Id); + } + {{/unless}} + {{/unless}} + {{/unless}} + {{/each}} + } {{/with}} } } diff --git a/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs b/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs index 8c3a946b7..945c3b0e5 100644 --- a/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs +++ b/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs @@ -21,13 +21,18 @@ namespace SysML2.NET.Serializer.Json.Tests { using System; + using System.Collections.Generic; using System.IO; using System.Linq; + using System.Runtime.Serialization; + using System.Text; + using System.Text.Json; using System.Threading; using System.Threading.Tasks; using NUnit.Framework; + using SysML2.NET.Common; using SysML2.NET.Core.Core.Types; using SysML2.NET.Core.DTO.Core.Features; using SysML2.NET.PIM.DTO; @@ -39,6 +44,16 @@ namespace SysML2.NET.Serializer.Json.Tests [TestFixture] public class DeSerializerTestFixture { + /// + /// A single element json object + /// + private const string Element = """{"@type":"Feature","@id":"00a6ef10-d3dc-4741-9029-2c9978c2f083","elementId":"00a6ef10-d3dc-4741-9029-2c9978c2f083"}"""; + + /// + /// The identifier that carries + /// + private static readonly Guid ElementIdentifier = Guid.Parse("00a6ef10-d3dc-4741-9029-2c9978c2f083"); + private DeSerializer deSerializer; [SetUp] @@ -234,5 +249,195 @@ public void Verify_that_particular_project_and_branches_from_restapi_json_can_be Assert.That(branch.Created, Is.EqualTo(DateTime.Parse("2023-03-13T17:53:50.188295-04:00"))); } } + + [Test] + public void VerifyDeSerialize() + { + using (Assert.EnterMultipleScope()) + { + Assert.That(() => this.DeSerializeJson(string.Empty), Throws.InstanceOf(), "empty stream"); + Assert.That(() => this.DeSerializeJson(" "), Throws.InstanceOf(), "white space only"); + Assert.That(() => this.DeSerializeJson($"[{Element}] [{Element}]"), Throws.InstanceOf(), "trailing content"); + Assert.That(() => this.DeSerializeJson("42"), Throws.TypeOf(), "scalar root"); + Assert.That(() => this.DeSerializeJson("[{}]"), Throws.TypeOf(), "element without an @type"); + } + + using (Assert.EnterMultipleScope()) + { + Assert.That(this.DeSerializeJson("[]"), Has.Count.EqualTo(0), "empty array"); + Assert.That(this.DeSerializeJson($"[{Element}]"), Has.Count.EqualTo(1), "array root"); + Assert.That(this.DeSerializeJson(Element), Has.Count.EqualTo(1), "single object root"); + Assert.That(this.DeSerializeJson($" [ {Element} ] "), Has.Count.EqualTo(1), "surrounding white space"); + Assert.That(this.DeSerializeJson($"[{Element}]"), Has.Count.EqualTo(1), "utf-8 byte order mark"); + Assert.That(this.DeSerializeJson($"[{Element}]", dribble: true), Has.Count.EqualTo(1), "non seekable stream that dribbles bytes"); + } + + var feature = (IFeature)this.DeSerializeJson($"[{Element}]")[0]; + + using (Assert.EnterMultipleScope()) + { + Assert.That(feature.Id, Is.EqualTo(ElementIdentifier)); + Assert.That(feature.ElementId, Is.EqualTo("00a6ef10-d3dc-4741-9029-2c9978c2f083")); + } + } + + [Test] + public async Task VerifyDeSerializeAsync() + { + await Assert.ThatAsync(async () => { await this.DeSerializeJsonAsync(string.Empty); }, Throws.InstanceOf()); + + await Assert.ThatAsync(async () => { await this.DeSerializeJsonAsync($"[{Element}] [{Element}]"); }, Throws.InstanceOf()); + + await Assert.ThatAsync(async () => { await this.DeSerializeJsonAsync("42"); }, Throws.TypeOf()); + + var emptyArray = await this.DeSerializeJsonAsync("[]"); + var arrayRoot = await this.DeSerializeJsonAsync($"[{Element}]"); + var singleObject = await this.DeSerializeJsonAsync(Element); + var byteOrderMark = await this.DeSerializeJsonAsync($"[{Element}]"); + var dribbled = await this.DeSerializeJsonAsync($"[{Element}]", dribble: true); + + using (Assert.EnterMultipleScope()) + { + Assert.That(emptyArray, Has.Count.EqualTo(0), "empty array"); + Assert.That(arrayRoot, Has.Count.EqualTo(1), "array root"); + Assert.That(singleObject, Has.Count.EqualTo(1), "single object root"); + Assert.That(byteOrderMark, Has.Count.EqualTo(1), "utf-8 byte order mark"); + Assert.That(dribbled, Has.Count.EqualTo(1), "non seekable stream that dribbles bytes"); + Assert.That(((IFeature)arrayRoot[0]).Id, Is.EqualTo(ElementIdentifier)); + } + } + + /// + /// Deserializes the provided json + /// + /// + /// the json to deserialize + /// + /// + /// when true the json is presented through a non seekable stream that yields a single byte per read + /// + /// + /// the deserialized items + /// + private List DeSerializeJson(string json, bool dribble = false) + { + using var stream = CreateStream(json, dribble); + + return this.deSerializer.DeSerialize(stream, SerializationModeKind.JSON, SerializationTargetKind.CORE, false).ToList(); + } + + /// + /// Asynchronously deserializes the provided json + /// + /// + /// the json to deserialize + /// + /// + /// when true the json is presented through a non seekable stream that yields a single byte per read + /// + /// + /// the deserialized items + /// + private async Task> DeSerializeJsonAsync(string json, bool dribble = false) + { + await using var stream = CreateStream(json, dribble); + + var data = await this.deSerializer.DeSerializeAsync(stream, SerializationModeKind.JSON, SerializationTargetKind.CORE, false, CancellationToken.None); + + return data.ToList(); + } + + /// + /// Creates the input for the provided json + /// + /// + /// the json that the stream exposes + /// + /// + /// when true a non seekable stream that yields a single byte per read is returned + /// + /// + /// the input + /// + private static Stream CreateStream(string json, bool dribble) + { + var bytes = new UTF8Encoding(false).GetBytes(json); + + return dribble ? new DribblingStream(bytes) : new MemoryStream(bytes, false); + } + + /// + /// A non seekable that yields a single byte per read, so that the buffer growth and + /// continuation handling of the deserializer's read loop is exercised + /// + private sealed class DribblingStream : Stream + { + /// + /// The bytes that the stream exposes + /// + private readonly byte[] bytes; + + /// + /// The index of the next byte to yield + /// + private int index; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The bytes that the stream exposes + /// + public DribblingStream(byte[] bytes) + { + this.bytes = bytes; + } + + /// + public override bool CanRead => true; + + /// + public override bool CanSeek => false; + + /// + public override bool CanWrite => false; + + /// + public override long Length => throw new NotSupportedException(); + + /// + public override long Position + { + get => throw new NotSupportedException(); + set => throw new NotSupportedException(); + } + + /// + public override void Flush() + { + } + + /// + public override int Read(byte[] buffer, int offset, int count) + { + if (this.index == this.bytes.Length || count == 0) + { + return 0; + } + + buffer[offset] = this.bytes[this.index++]; + + return 1; + } + + /// + public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException(); + + /// + public override void SetLength(long value) => throw new NotSupportedException(); + + /// + public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException(); + } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AcceptActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AcceptActionUsageDeSerializer.cs index 5523f8e68..1af55121f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AcceptActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AcceptActionUsageDeSerializer.cs @@ -22,2519 +22,3007 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AcceptActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAcceptActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AcceptActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAcceptActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AcceptActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AcceptActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AcceptActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AcceptActionUsage") - { - throw new InvalidOperationException($"The AcceptActionUsageDeSerializer can only be used to deserialize objects of type IAcceptActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var payloadArgumentSeen = false; + var payloadParameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var receiverArgumentSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the AcceptActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the AcceptActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AcceptActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AcceptActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the AcceptActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("payloadArgument"u8)) { - dtoInstance.owningNamespace = null; + payloadArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadArgumentValue)) + { + dtoInstance.payloadArgument = payloadArgumentValue; + } + + continue; } - else + + if (reader.ValueTextEquals("payloadParameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + payloadParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.payloadParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the AcceptActionUsage.payloadParameter property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadParameterValue)) + { + dtoInstance.payloadParameter = payloadParameterValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("receiverArgument"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + receiverArgumentSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.receiverArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var receiverArgumentValue)) + { + dtoInstance.receiverArgument = receiverArgumentValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadArgument"u8, out var payloadArgumentProperty)) - { - if (payloadArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadArgument = null; + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (payloadArgumentProperty.TryGetProperty("@id"u8, out var payloadArgumentExternalIdProperty)) - { - var propertyValue = payloadArgumentExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.payloadArgument = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the payloadArgument Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadParameter"u8, out var payloadParameterProperty)) - { - if (payloadParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadParameter = Guid.Empty; - logger.LogDebug($"the AcceptActionUsage.payloadParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (payloadParameterProperty.TryGetProperty("@id"u8, out var payloadParameterExternalIdProperty)) - { - var propertyValue = payloadParameterExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.payloadParameter = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the payloadParameter Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("variantMembership"u8)) + { + variantMembershipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("receiverArgument"u8, out var receiverArgumentProperty)) - { - if (receiverArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.receiverArgument = null; - } - else - { - if (receiverArgumentProperty.TryGetProperty("@id"u8, out var receiverArgumentExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = receiverArgumentExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.receiverArgument = Guid.Parse(propertyValue); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the receiverArgument Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!actionDefinitionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actionDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); } - } - else + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!payloadArgumentSeen) + { + logger.LogDebug("the payloadArgument Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!payloadParameterSeen) + { + logger.LogDebug("the payloadParameter Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!receiverArgumentSeen) + { + logger.LogDebug("the receiverArgument Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AcceptActionUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AcceptActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AcceptActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AcceptActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionDefinitionDeSerializer.cs index 664416506..682417bec 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionDefinitionDeSerializer.cs @@ -22,1857 +22,2225 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ActionDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IActionDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ActionDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IActionDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActionDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActionDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ActionDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ActionDefinition") + var actionSeen = false; + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The ActionDefinitionDeSerializer can only be used to deserialize objects of type IActionDefinition, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ActionDefinition json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActionDefinition cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ActionDefinition cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("action"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) + { + dtoInstance.action.Add(actionValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = actionExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!actionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the action Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); } - } - else + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the usage Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ActionDefinition json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActionDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActionDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionUsageDeSerializer.cs index fcd14c325..a4e3df39a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActionUsageDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ActionUsage") - { - throw new InvalidOperationException($"The ActionUsageDeSerializer can only be used to deserialize objects of type IActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the ActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ActionUsage json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActorMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActorMembershipDeSerializer.cs index 38843cb4b..f70c6ef55 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActorMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ActorMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ActorMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IActorMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ActorMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IActorMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActorMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ActorMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedActorParameterSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ActorMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActorMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ActorMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ActorMembership") - { - throw new InvalidOperationException($"The ActorMembershipDeSerializer can only be used to deserialize objects of type IActorMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ActorMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedActorParameter"u8, out var ownedActorParameterProperty)) - { - if (ownedActorParameterProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedActorParameter = Guid.Empty; - logger.LogDebug($"the ActorMembership.ownedActorParameter property was not found in the Json. The value is set to Guid.Empty"); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedActorParameter"u8)) { - if (ownedActorParameterProperty.TryGetProperty("@id"u8, out var ownedActorParameterExternalIdProperty)) + ownedActorParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedActorParameterExternalIdProperty.GetString(); + dtoInstance.ownedActorParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedActorParameter = Guid.Parse(propertyValue); + logger.LogDebug("the ActorMembership.ownedActorParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActorParameterValue)) + { + dtoInstance.ownedActorParameter = ownedActorParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedActorParameter Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); - if (propertyValue != null) + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ActorMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ActorMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedActorParameterSeen) + { + logger.LogDebug("the ownedActorParameter Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ActorMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ActorMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ActorMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ActorMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationDefinitionDeSerializer.cs index 81da1e747..71907e020 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationDefinitionDeSerializer.cs @@ -22,2013 +22,2396 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Allocations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AllocationDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAllocationDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Allocations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AllocationDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAllocationDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AllocationDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AllocationDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AllocationDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AllocationDefinition") - { - throw new InvalidOperationException($"The AllocationDefinitionDeSerializer can only be used to deserialize objects of type IAllocationDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var allocationSeen = false; + var connectionEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AllocationDefinition cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the AllocationDefinition json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AllocationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("allocation"u8, out var allocationProperty)) - { - foreach (var arrayItem in allocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var allocationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = allocationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.allocation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the allocation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectionEnd"u8, out var connectionEndProperty)) - { - foreach (var arrayItem in connectionEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("allocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectionEndExternalIdProperty)) + allocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = connectionEndExternalIdProperty.GetString(); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var allocationValue)) + { + dtoInstance.allocation.Add(allocationValue); + } + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("connectionEnd"u8)) + { + connectionEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectionEndValue)) { - dtoInstance.connectionEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectionEnd.Add(connectionEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the connectionEnd Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("relatedType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedType.Add(relatedTypeValue); } } - } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) - { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.sourceType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); + sourceTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) + { + dtoInstance.sourceType = sourceTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the sourceType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("targetType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); + targetTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); + dtoInstance.targetType.Add(targetTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!allocationSeen) + { + logger.LogDebug("the allocation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!connectionEndSeen) + { + logger.LogDebug("the connectionEnd Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the AllocationDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AllocationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsIndividual = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AllocationDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationUsageDeSerializer.cs index 30a326a03..463497ecf 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AllocationUsageDeSerializer.cs @@ -22,2706 +22,3221 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Allocations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AllocationUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAllocationUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Allocations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AllocationUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAllocationUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AllocationUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AllocationUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AllocationUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AllocationUsage") - { - throw new InvalidOperationException($"The AllocationUsageDeSerializer can only be used to deserialize objects of type IAllocationUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var allocationDefinitionSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var partDefinitionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AllocationUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the AllocationUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AllocationUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("allocationDefinition"u8, out var allocationDefinitionProperty)) - { - foreach (var arrayItem in allocationDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var allocationDefinitionExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = allocationDefinitionExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.allocationDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the allocationDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("allocationDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + allocationDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var allocationDefinitionValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.allocationDefinition.Add(allocationDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AllocationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the AllocationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) - { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelatedElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningType = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("partDefinition"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + partDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var partDefinitionValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.partDefinition.Add(partDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("partDefinition"u8, out var partDefinitionProperty)) - { - foreach (var arrayItem in partDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var partDefinitionExternalIdProperty)) - { - var propertyValue = partDefinitionExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.partDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the partDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) - { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceFeature = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!allocationDefinitionSeen) + { + logger.LogDebug("the allocationDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!partDefinitionSeen) + { + logger.LogDebug("the partDefinition Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Allocations.AllocationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AllocationUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AllocationUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AllocationUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseDefinitionDeSerializer.cs index 613f96a74..a1b2a495d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseDefinitionDeSerializer.cs @@ -22,2027 +22,2410 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.AnalysisCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AnalysisCaseDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAnalysisCaseDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.AnalysisCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AnalysisCaseDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAnalysisCaseDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnalysisCaseDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnalysisCaseDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AnalysisCaseDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AnalysisCaseDefinition") - { - throw new InvalidOperationException($"The AnalysisCaseDefinitionDeSerializer can only be used to deserialize objects of type IAnalysisCaseDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var actorParameterSeen = false; + var aliasIdsSeen = false; + var calculationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var resultExpressionSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the AnalysisCaseDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the AnalysisCaseDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AnalysisCaseDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculation"u8, out var calculationProperty)) - { - foreach (var arrayItem in calculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var calculationExternalIdProperty)) - { - var propertyValue = calculationExternalIdProperty.GetString(); + calculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationValue)) { - dtoInstance.calculation.Add(Guid.Parse(propertyValue)); + dtoInstance.calculation.Add(calculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.objectiveRequirement = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the AnalysisCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the AnalysisCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("resultExpression"u8, out var resultExpressionProperty)) - { - if (resultExpressionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.resultExpression = null; + continue; } - else + + if (reader.ValueTextEquals("resultExpression"u8)) { - if (resultExpressionProperty.TryGetProperty("@id"u8, out var resultExpressionExternalIdProperty)) - { - var propertyValue = resultExpressionExternalIdProperty.GetString(); + resultExpressionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.resultExpression = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.resultExpression = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultExpressionValue)) + { + dtoInstance.resultExpression = resultExpressionValue; + } + + continue; } - } - else - { - logger.LogDebug("the resultExpression Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the AnalysisCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the AnalysisCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionSeen) + { + logger.LogDebug("the action Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!calculationSeen) + { + logger.LogDebug("the calculation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!resultExpressionSeen) + { + logger.LogDebug("the resultExpression Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AnalysisCaseDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AnalysisCaseDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseUsageDeSerializer.cs index b5ec9e080..1865a3348 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnalysisCaseUsageDeSerializer.cs @@ -22,2580 +22,3074 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.AnalysisCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AnalysisCaseUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAnalysisCaseUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.AnalysisCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AnalysisCaseUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAnalysisCaseUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnalysisCaseUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnalysisCaseUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AnalysisCaseUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AnalysisCaseUsage") + var actorParameterSeen = false; + var aliasIdsSeen = false; + var analysisCaseDefinitionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var resultExpressionSeen = false; + var shortNameSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The AnalysisCaseUsageDeSerializer can only be used to deserialize objects of type IAnalysisCaseUsage, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AnalysisCaseUsage json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AnalysisCaseUsage cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AnalysisCaseUsage cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("actorParameter"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = actorParameterExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("analysisCaseDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + analysisCaseDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.analysisCaseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var analysisCaseDefinitionValue)) + { + dtoInstance.analysisCaseDefinition = analysisCaseDefinitionValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("analysisCaseDefinition"u8, out var analysisCaseDefinitionProperty)) - { - if (analysisCaseDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.analysisCaseDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (analysisCaseDefinitionProperty.TryGetProperty("@id"u8, out var analysisCaseDefinitionExternalIdProperty)) - { - var propertyValue = analysisCaseDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.analysisCaseDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the analysisCaseDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AnalysisCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the AnalysisCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } - } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.objectiveRequirement = null; + continue; } - else + + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the AnalysisCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the AnalysisCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("resultExpression"u8, out var resultExpressionProperty)) - { - if (resultExpressionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("resultExpression"u8)) { - dtoInstance.resultExpression = null; + resultExpressionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.resultExpression = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultExpressionValue)) + { + dtoInstance.resultExpression = resultExpressionValue; + } + + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (resultExpressionProperty.TryGetProperty("@id"u8, out var resultExpressionExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExpressionExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.resultExpression = Guid.Parse(propertyValue); + logger.LogDebug("the AnalysisCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the resultExpression Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the AnalysisCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); - } - else + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actorParameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!analysisCaseDefinitionSeen) + { + logger.LogDebug("the analysisCaseDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!resultExpressionSeen) + { + logger.LogDebug("the resultExpression Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.AnalysisCases.AnalysisCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the AnalysisCaseUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AnalysisCaseUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AnalysisCaseUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs index 32d8d2d24..322ff1e5a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotatingElementDeSerializer.cs @@ -22,605 +22,753 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Annotations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AnnotatingElementDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAnnotatingElement DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Annotations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AnnotatingElementDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAnnotatingElement DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnnotatingElementDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnnotatingElementDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AnnotatingElementDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AnnotatingElement") - { - throw new InvalidOperationException($"The AnnotatingElementDeSerializer can only be used to deserialize objects of type IAnnotatingElement, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); + throw new JsonException("Expected a property name in the AnnotatingElement json object."); } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - foreach (var arrayItem in annotatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.annotatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + annotatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotatedElement.Add(annotatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("annotation"u8)) + { + annotationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedElementExternalIdProperty.GetString(); + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) + { + ownedAnnotatingRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedElement"u8)) { - dtoInstance.owner = null; + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) + { + dtoInstance.ownedElement.Add(ownedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); } - else + if (!annotatedElementSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + logger.LogDebug("the annotatedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AnnotatingElement json object."); + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AnnotatingElement cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.AnnotatingElement dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AnnotatingElement: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotationDeSerializer.cs index 6159268d9..d9fd70431 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AnnotationDeSerializer.cs @@ -22,800 +22,958 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Annotations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AnnotationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAnnotation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Annotations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AnnotationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAnnotation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnnotationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Annotation(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Annotation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AnnotationDeSerializer"); + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotatingElementSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotatingElementSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatedElementSeen = false; + var owningAnnotatingElementSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Annotation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Annotation cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AnnotationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Annotation") - { - throw new InvalidOperationException($"The AnnotationDeSerializer can only be used to deserialize objects of type IAnnotation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Annotation(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Annotation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Annotation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - var propertyValue = arrayItem.GetString(); + annotatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.AnnotatedElement = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the Annotation.AnnotatedElement property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) + { + dtoInstance.AnnotatedElement = annotatedElementValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - if (annotatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.AnnotatedElement = Guid.Empty; - logger.LogDebug($"the Annotation.AnnotatedElement property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("annotatingElement"u8)) { - if (annotatedElementProperty.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) + annotatingElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + dtoInstance.annotatingElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.AnnotatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the Annotation.annotatingElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatingElementValue)) + { + dtoInstance.annotatingElement = annotatingElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatingElement"u8, out var annotatingElementProperty)) - { - if (annotatingElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.annotatingElement = Guid.Empty; - logger.LogDebug($"the Annotation.annotatingElement property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (annotatingElementProperty.TryGetProperty("@id"u8, out var annotatingElementExternalIdProperty)) - { - var propertyValue = annotatingElementExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.annotatingElement = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the annotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotatingElement"u8, out var ownedAnnotatingElementProperty)) - { - if (ownedAnnotatingElementProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedAnnotatingElement = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotatingElement"u8)) { - if (ownedAnnotatingElementProperty.TryGetProperty("@id"u8, out var ownedAnnotatingElementExternalIdProperty)) - { - var propertyValue = ownedAnnotatingElementExternalIdProperty.GetString(); + ownedAnnotatingElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotatingElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedAnnotatingElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingElementValue)) + { + dtoInstance.ownedAnnotatingElement = ownedAnnotatingElementValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatedElement"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningAnnotatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatedElementValue)) + { + dtoInstance.owningAnnotatedElement = owningAnnotatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatedElement"u8, out var owningAnnotatedElementProperty)) - { - if (owningAnnotatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningAnnotatingElement"u8)) { - dtoInstance.owningAnnotatedElement = null; + owningAnnotatingElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingElementValue)) + { + dtoInstance.owningAnnotatingElement = owningAnnotatingElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningAnnotatedElementProperty.TryGetProperty("@id"u8, out var owningAnnotatedElementExternalIdProperty)) - { - var propertyValue = owningAnnotatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingElement"u8, out var owningAnnotatingElementProperty)) - { - if (owningAnnotatingElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningAnnotatingElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningAnnotatingElementProperty.TryGetProperty("@id"u8, out var owningAnnotatingElementExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningAnnotatingElementExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.owningAnnotatingElement = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningMembership = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelatedElement = null; + logger.LogDebug("the aliasIds Json property was not found in the Annotation: {Id}", dtoInstance.Id); } - else + if (!annotatedElementSeen) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the annotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + if (!annotatingElementSeen) + { + logger.LogDebug("the annotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingElementSeen) + { + logger.LogDebug("the ownedAnnotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningAnnotatedElementSeen) + { + logger.LogDebug("the owningAnnotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingElementSeen) + { + logger.LogDebug("the owningAnnotatingElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Annotation dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.OwningRelationship = null; + throw new JsonException("Expected a property name in the Annotation json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Annotation cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + annotatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.AnnotatedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Annotation.AnnotatedElement property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Annotation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.AnnotatedElement = annotatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - if (annotatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.AnnotatedElement = Guid.Empty; - logger.LogDebug($"the Annotation.AnnotatedElement property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (annotatedElementProperty.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) - { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AnnotatedElement = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!annotatedElementSeen) + { + logger.LogDebug("the annotatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Annotation: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssertConstraintUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssertConstraintUsageDeSerializer.cs index 1835c7d0f..96bd320b7 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssertConstraintUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssertConstraintUsageDeSerializer.cs @@ -22,2556 +22,3066 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Constraints; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AssertConstraintUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAssertConstraintUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Constraints; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AssertConstraintUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAssertConstraintUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssertConstraintUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssertConstraintUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AssertConstraintUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AssertConstraintUsage") - { - throw new InvalidOperationException($"The AssertConstraintUsageDeSerializer can only be used to deserialize objects of type IAssertConstraintUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var assertedConstraintSeen = false; + var chainingFeatureSeen = false; + var constraintDefinitionSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AssertConstraintUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the AssertConstraintUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AssertConstraintUsage cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assertedConstraint"u8, out var assertedConstraintProperty)) - { - if (assertedConstraintProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.assertedConstraint = Guid.Empty; - logger.LogDebug($"the AssertConstraintUsage.assertedConstraint property was not found in the Json. The value is set to Guid.Empty"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (assertedConstraintProperty.TryGetProperty("@id"u8, out var assertedConstraintExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = assertedConstraintExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.assertedConstraint = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the assertedConstraint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("assertedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + assertedConstraintSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + dtoInstance.assertedConstraint = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the AssertConstraintUsage.assertedConstraint property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assertedConstraintValue)) + { + dtoInstance.assertedConstraint = assertedConstraintValue; + } - if (jsonElement.TryGetProperty("constraintDefinition"u8, out var constraintDefinitionProperty)) - { - if (constraintDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.constraintDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (constraintDefinitionProperty.TryGetProperty("@id"u8, out var constraintDefinitionExternalIdProperty)) - { - var propertyValue = constraintDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.constraintDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the constraintDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("constraintDefinition"u8)) { - dtoInstance.crossFeature = null; + constraintDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.constraintDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var constraintDefinitionValue)) + { + dtoInstance.constraintDefinition = constraintDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AssertConstraintUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the AssertConstraintUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.multiplicity = null; + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningType = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the AssertConstraintUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the AssertConstraintUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!assertedConstraintSeen) + { + logger.LogDebug("the assertedConstraint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!constraintDefinitionSeen) + { + logger.LogDebug("the constraintDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.AssertConstraintUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the AssertConstraintUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AssertConstraintUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AssertConstraintUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssignmentActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssignmentActionUsageDeSerializer.cs index 66020f985..86990cdf2 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssignmentActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssignmentActionUsageDeSerializer.cs @@ -22,2519 +22,3007 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AssignmentActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAssignmentActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AssignmentActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAssignmentActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssignmentActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssignmentActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AssignmentActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AssignmentActionUsage") - { - throw new InvalidOperationException($"The AssignmentActionUsageDeSerializer can only be used to deserialize objects of type IAssignmentActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var referentSeen = false; + var shortNameSeen = false; + var targetArgumentSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var valueExpressionSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the AssignmentActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the AssignmentActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AssignmentActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AssignmentActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the AssignmentActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeatureMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningNamespace = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referent"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + referentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.referent = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the AssignmentActionUsage.referent property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referentValue)) + { + dtoInstance.referent = referentValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("targetArgument"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + targetArgumentSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetArgumentValue)) + { + dtoInstance.targetArgument = targetArgumentValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("unioningType"u8)) + { + unioningTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("referent"u8, out var referentProperty)) - { - if (referentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.referent = Guid.Empty; - logger.LogDebug($"the AssignmentActionUsage.referent property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (referentProperty.TryGetProperty("@id"u8, out var referentExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = referentExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.referent = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the referent Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetArgument"u8, out var targetArgumentProperty)) - { - if (targetArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.targetArgument = null; + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (targetArgumentProperty.TryGetProperty("@id"u8, out var targetArgumentExternalIdProperty)) - { - var propertyValue = targetArgumentExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.targetArgument = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetArgument Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("valueExpression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + valueExpressionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.valueExpression = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var valueExpressionValue)) + { + dtoInstance.valueExpression = valueExpressionValue; } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("valueExpression"u8, out var valueExpressionProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (valueExpressionProperty.ValueKind == JsonValueKind.Null) + if (!actionDefinitionSeen) { - dtoInstance.valueExpression = null; + logger.LogDebug("the actionDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); } - else + if (!aliasIdsSeen) { - if (valueExpressionProperty.TryGetProperty("@id"u8, out var valueExpressionExternalIdProperty)) - { - var propertyValue = valueExpressionExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.valueExpression = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the aliasIds Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); } - } - else + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!referentSeen) + { + logger.LogDebug("the referent Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!targetArgumentSeen) + { + logger.LogDebug("the targetArgument Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!valueExpressionSeen) + { + logger.LogDebug("the valueExpression Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the valueExpression Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AssignmentActionUsage json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AssignmentActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.AssignmentActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the AssignmentActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationDeSerializer.cs index 25f8f9623..fe9a706af 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationDeSerializer.cs @@ -22,1325 +22,1588 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Associations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AssociationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAssociation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Associations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AssociationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAssociation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssociationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Associations.Association(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssociationDeSerializer"); + var aliasIdsSeen = false; + var associationEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Association json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Association cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AssociationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Association") - { - throw new InvalidOperationException($"The AssociationDeSerializer can only be used to deserialize objects of type IAssociation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Associations.Association(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Association cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("associationEnd"u8)) { - var propertyValue = arrayItem.GetString(); + associationEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationEndValue)) + { + dtoInstance.associationEnd.Add(associationEndValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("associationEnd"u8, out var associationEndProperty)) - { - foreach (var arrayItem in associationEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationEndExternalIdProperty)) - { - var propertyValue = associationEndExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.associationEnd.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the associationEnd Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceType = sourceTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("targetType"u8)) + { + targetTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.targetType.Add(targetTypeValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceType = null; + logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); } - else + if (!associationEndSeen) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the associationEnd Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Association: {Id}", dtoInstance.Id); } - } - else + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Association: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the sourceType Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Association json object."); + } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Association cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Association: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.Association dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Association: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Association: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationStructureDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationStructureDeSerializer.cs index 5e417e8dd..0704f9756 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationStructureDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AssociationStructureDeSerializer.cs @@ -22,1325 +22,1588 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Associations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AssociationStructureDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAssociationStructure DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Associations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AssociationStructureDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAssociationStructure DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssociationStructureDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AssociationStructureDeSerializer"); + var aliasIdsSeen = false; + var associationEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AssociationStructure json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AssociationStructure cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AssociationStructureDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "AssociationStructure") - { - throw new InvalidOperationException($"The AssociationStructureDeSerializer can only be used to deserialize objects of type IAssociationStructure, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AssociationStructure cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("associationEnd"u8)) { - var propertyValue = arrayItem.GetString(); + associationEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationEndValue)) + { + dtoInstance.associationEnd.Add(associationEndValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("associationEnd"u8, out var associationEndProperty)) - { - foreach (var arrayItem in associationEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationEndExternalIdProperty)) - { - var propertyValue = associationEndExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.associationEnd.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the associationEnd Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceType = sourceTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("targetType"u8)) + { + targetTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.targetType.Add(targetTypeValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceType = null; + logger.LogDebug("the aliasIds Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); } - else + if (!associationEndSeen) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the associationEnd Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); } - } - else + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the sourceType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AssociationStructure json object."); + } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AssociationStructure cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Associations.AssociationStructure dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AssociationStructure: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeDefinitionDeSerializer.cs index 504ed03cf..7ac722bc6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeDefinitionDeSerializer.cs @@ -22,1793 +22,2143 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Attributes; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AttributeDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAttributeDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Attributes; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AttributeDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAttributeDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AttributeDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AttributeDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the AttributeDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AttributeDefinition json object."); + } - if (@type.GetString() != "AttributeDefinition") - { - throw new InvalidOperationException($"The AttributeDefinitionDeSerializer can only be used to deserialize objects of type IAttributeDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AttributeDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the AttributeDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AttributeDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AttributeDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AttributeDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeUsageDeSerializer.cs index bcb9446c7..ae2a1db7d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/AttributeUsageDeSerializer.cs @@ -22,2380 +22,2848 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Attributes; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class AttributeUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IAttributeUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Attributes; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class AttributeUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IAttributeUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AttributeUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("AttributeUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the AttributeUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "AttributeUsage") - { - throw new InvalidOperationException($"The AttributeUsageDeSerializer can only be used to deserialize objects of type IAttributeUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var attributeDefinitionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the AttributeUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the AttributeUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the AttributeUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("attributeDefinition"u8, out var attributeDefinitionProperty)) - { - foreach (var arrayItem in attributeDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var attributeDefinitionExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = attributeDefinitionExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.attributeDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the attributeDefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("attributeDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + attributeDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var attributeDefinitionValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.attributeDefinition.Add(attributeDefinitionValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the AttributeUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the AttributeUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.multiplicity = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedView"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!attributeDefinitionSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the attributeDefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!crossFeatureSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the crossFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the declaredShortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!differencingTypeSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the differencingType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!directedFeatureSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the directedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); } - } - else + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Attributes.AttributeUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the isOrdered Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the AttributeUsage json object."); + } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the AttributeUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.OwningRelationship = null; + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isConstant"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsDerived = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) + { + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the AttributeUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BehaviorDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BehaviorDeSerializer.cs index 932dd5707..7252f8ef4 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BehaviorDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BehaviorDeSerializer.cs @@ -22,1169 +22,1417 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Behaviors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class BehaviorDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IBehavior DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Behaviors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class BehaviorDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IBehavior DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BehaviorDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BehaviorDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the BehaviorDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Behavior json object."); + } - if (@type.GetString() != "Behavior") - { - throw new InvalidOperationException($"The BehaviorDeSerializer can only be used to deserialize objects of type IBehavior, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Behavior cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Behavior cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("unioningType"u8)) + { + unioningTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Behavior json object."); + } - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Behavior cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Behavior dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Behavior: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorAsUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorAsUsageDeSerializer.cs index e3a04f4fe..c4a1076a9 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorAsUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorAsUsageDeSerializer.cs @@ -22,2600 +22,3087 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Connections; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class BindingConnectorAsUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IBindingConnectorAsUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Connections; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class BindingConnectorAsUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IBindingConnectorAsUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BindingConnectorAsUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BindingConnectorAsUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the BindingConnectorAsUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "BindingConnectorAsUsage") - { - throw new InvalidOperationException($"The BindingConnectorAsUsageDeSerializer can only be used to deserialize objects of type IBindingConnectorAsUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var associationSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var definitionSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the BindingConnectorAsUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the BindingConnectorAsUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the BindingConnectorAsUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("association"u8, out var associationProperty)) - { - foreach (var arrayItem in associationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = associationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.association.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the association Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("association"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + associationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.association.Add(associationValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("definition"u8, out var definitionProperty)) - { - foreach (var arrayItem in definitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var definitionExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = definitionExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("definition"u8)) + { + definitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var definitionValue)) { - dtoInstance.definition.Add(Guid.Parse(propertyValue)); + dtoInstance.definition.Add(definitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the definition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.endOwningType = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("feature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the BindingConnectorAsUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the BindingConnectorAsUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceFeature = sourceFeatureValue; + } + + continue; + } + + if (reader.ValueTextEquals("targetFeature"u8)) + { + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("usage"u8)) { - dtoInstance.owningUsage = null; + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) + { + dtoInstance.usage.Add(usageValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); } - else + if (!associationSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the association Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!definitionSeen) + { + logger.LogDebug("the definition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); } - } - else + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the sourceFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the BindingConnectorAsUsage json object."); + } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the BindingConnectorAsUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.BindingConnectorAsUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("isAbstract"u8)) { - var propertyValue = arrayItem.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType != JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.IsAbstract = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isComposite"u8)) + { + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + isConstantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BindingConnectorAsUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorDeSerializer.cs index f9992d7bc..469c5e461 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BindingConnectorDeSerializer.cs @@ -22,1888 +22,2271 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Connectors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class BindingConnectorDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IBindingConnector DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Connectors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class BindingConnectorDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IBindingConnector DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BindingConnectorDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BindingConnectorDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the BindingConnectorDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "BindingConnector") - { - throw new InvalidOperationException($"The BindingConnectorDeSerializer can only be used to deserialize objects of type IBindingConnector, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + var aliasIdsSeen = false; + var associationSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the BindingConnector json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the BindingConnector cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the BindingConnector cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("association"u8)) { - var propertyValue = arrayItem.GetString(); + associationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("association"u8, out var associationProperty)) - { - foreach (var arrayItem in associationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var associationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = associationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationValue)) { - dtoInstance.association.Add(Guid.Parse(propertyValue)); + dtoInstance.association.Add(associationValue); } } + + continue; } - } - else - { - logger.LogDebug("the association Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectorEnd.Add(connectorEndValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + defaultFeaturingTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) + { + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the BindingConnector.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the BindingConnector.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); } - else + if (!associationSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the association Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); } - } - else + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the targetFeature Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the BindingConnector json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the BindingConnector cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.BindingConnector dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BindingConnector: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BooleanExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BooleanExpressionDeSerializer.cs index e0e1a70f2..45ed5bfe9 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BooleanExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/BooleanExpressionDeSerializer.cs @@ -22,1749 +22,2122 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class BooleanExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IBooleanExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class BooleanExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IBooleanExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BooleanExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("BooleanExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var predicateSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the BooleanExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the BooleanExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the BooleanExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "BooleanExpression") - { - throw new InvalidOperationException($"The BooleanExpressionDeSerializer can only be used to deserialize objects of type IBooleanExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the BooleanExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the BooleanExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the BooleanExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.multiplicity = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedConjugator = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningType = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("predicate"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + predicateSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.predicate = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var predicateValue)) + { + dtoInstance.predicate = predicateValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("predicate"u8, out var predicateProperty)) - { - if (predicateProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.predicate = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (predicateProperty.TryGetProperty("@id"u8, out var predicateExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = predicateExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.predicate = Guid.Parse(propertyValue); + logger.LogDebug("the BooleanExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the predicate Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the BooleanExpression.result property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + logger.LogDebug("the isPortion Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!predicateSeen) + { + logger.LogDebug("the predicate Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the BooleanExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the BooleanExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.BooleanExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the BooleanExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationDefinitionDeSerializer.cs index 47cbdd354..3c27540ec 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationDefinitionDeSerializer.cs @@ -22,1934 +22,2316 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Calculations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CalculationDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ICalculationDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Calculations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CalculationDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICalculationDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CalculationDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CalculationDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CalculationDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "CalculationDefinition") - { - throw new InvalidOperationException($"The CalculationDefinitionDeSerializer can only be used to deserialize objects of type ICalculationDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var aliasIdsSeen = false; + var calculationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the CalculationDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the CalculationDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CalculationDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculation"u8, out var calculationProperty)) - { - foreach (var arrayItem in calculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var calculationExternalIdProperty)) - { - var propertyValue = calculationExternalIdProperty.GetString(); + calculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationValue)) { - dtoInstance.calculation.Add(Guid.Parse(propertyValue)); + dtoInstance.calculation.Add(calculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the CalculationDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the CalculationDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!actionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the action Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!calculationSeen) + { + logger.LogDebug("the calculation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); } - } - else + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the usage Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CalculationDefinition json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CalculationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CalculationDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationUsageDeSerializer.cs index b21652de2..2b3e49687 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CalculationUsageDeSerializer.cs @@ -22,2487 +22,2980 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Calculations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CalculationUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ICalculationUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Calculations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CalculationUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICalculationUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CalculationUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CalculationUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CalculationUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "CalculationUsage") - { - throw new InvalidOperationException($"The CalculationUsageDeSerializer can only be used to deserialize objects of type ICalculationUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var calculationDefinitionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the CalculationUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the CalculationUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CalculationUsage cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculationDefinition"u8, out var calculationDefinitionProperty)) - { - if (calculationDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.calculationDefinition = null; + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (calculationDefinitionProperty.TryGetProperty("@id"u8, out var calculationDefinitionExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = calculationDefinitionExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.calculationDefinition = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculationDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculationDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + calculationDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + dtoInstance.calculationDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationDefinitionValue)) + { + dtoInstance.calculationDefinition = calculationDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("chainingFeature"u8)) + { + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the CalculationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the CalculationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningType = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the CalculationUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the CalculationUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!calculationDefinitionSeen) + { + logger.LogDebug("the calculationDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Calculations.CalculationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CalculationUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CalculationUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the CalculationUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseDefinitionDeSerializer.cs index 74778177d..93d4f178f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseDefinitionDeSerializer.cs @@ -22,2003 +22,2388 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Cases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CaseDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ICaseDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Cases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CaseDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICaseDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CaseDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CaseDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CaseDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "CaseDefinition") - { - throw new InvalidOperationException($"The CaseDefinitionDeSerializer can only be used to deserialize objects of type ICaseDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var actorParameterSeen = false; + var aliasIdsSeen = false; + var calculationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the CaseDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the CaseDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CaseDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculation"u8, out var calculationProperty)) - { - foreach (var arrayItem in calculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var calculationExternalIdProperty)) - { - var propertyValue = calculationExternalIdProperty.GetString(); + calculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationValue)) { - dtoInstance.calculation.Add(Guid.Parse(propertyValue)); + dtoInstance.calculation.Add(calculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.objectiveRequirement = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the CaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the CaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the CaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the CaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionSeen) + { + logger.LogDebug("the action Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!calculationSeen) + { + logger.LogDebug("the calculation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CaseDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CaseDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CaseDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseUsageDeSerializer.cs index c34e4ddb5..d40410579 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CaseUsageDeSerializer.cs @@ -22,2556 +22,3052 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Cases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CaseUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ICaseUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Cases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CaseUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICaseUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CaseUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.CaseUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CaseUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CaseUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "CaseUsage") + var actorParameterSeen = false; + var aliasIdsSeen = false; + var caseDefinitionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The CaseUsageDeSerializer can only be used to deserialize objects of type ICaseUsage, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CaseUsage json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.CaseUsage(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CaseUsage cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the CaseUsage cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("actorParameter"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = actorParameterExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("caseDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + caseDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.caseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var caseDefinitionValue)) + { + dtoInstance.caseDefinition = caseDefinitionValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("caseDefinition"u8, out var caseDefinitionProperty)) - { - if (caseDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.caseDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (caseDefinitionProperty.TryGetProperty("@id"u8, out var caseDefinitionExternalIdProperty)) - { - var propertyValue = caseDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.caseDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the caseDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the CaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the CaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } - } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.objectiveRequirement = null; + continue; } - else + + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the CaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the CaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the CaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the CaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!caseDefinitionSeen) + { + logger.LogDebug("the caseDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.CaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CaseUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CaseUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the CaseUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassDeSerializer.cs index 5a449a474..cff4777a5 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassDeSerializer.cs @@ -22,1149 +22,1394 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Classes; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ClassDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IClass DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Classes; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ClassDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IClass DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ClassDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Classes.Class(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Classes.Class dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ClassDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ClassDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Class json object."); + } - if (@type.GetString() != "Class") - { - throw new InvalidOperationException($"The ClassDeSerializer can only be used to deserialize objects of type IClass, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Classes.Class(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Class cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Class cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Classes.Class dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Class: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Class: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Class: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the shortName Json property was not found in the Class: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Class: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Classes.Class dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Class json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Class cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Class: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Classes.Class dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Class: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Class: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Class: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassifierDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassifierDeSerializer.cs index 2ca28ab78..2b97d1aa2 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassifierDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ClassifierDeSerializer.cs @@ -22,1149 +22,1394 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Classifiers; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ClassifierDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IClassifier DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Classifiers; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ClassifierDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IClassifier DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ClassifierDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Classifiers.Classifier(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Classifier dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ClassifierDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ClassifierDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Classifier json object."); + } - if (@type.GetString() != "Classifier") - { - throw new InvalidOperationException($"The ClassifierDeSerializer can only be used to deserialize objects of type IClassifier, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Classifiers.Classifier(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Classifier cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Classifier cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Classifier dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the shortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Classifier dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Classifier json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Classifier cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Classifier dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Classifier: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CollectExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CollectExpressionDeSerializer.cs index d96fa2446..8c1b93ebd 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CollectExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CollectExpressionDeSerializer.cs @@ -22,1822 +22,2212 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CollectExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ICollectExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CollectExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICollectExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CollectExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CollectExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CollectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CollectExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CollectExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "CollectExpression") - { - throw new InvalidOperationException($"The CollectExpressionDeSerializer can only be used to deserialize objects of type ICollectExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the CollectExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the CollectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the CollectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the CollectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + logger.LogDebug("the CollectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = membershipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; - } - else + if (reader.ValueTextEquals("isVariable"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedCrossSubsetting = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningType = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the CollectExpression.result property was not found in the Json. The value is set to Guid.Empty"); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the CollectExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.CollectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CollectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the CollectExpression cannot be deserialized"); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CollectExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CommentDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CommentDeSerializer.cs index caaad6927..262b27a4a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CommentDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CommentDeSerializer.cs @@ -22,651 +22,823 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Annotations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class CommentDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IComment DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Annotations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class CommentDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IComment DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CommentDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Comment(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Comment dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CommentDeSerializer"); + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotationSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var localeSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Comment json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Comment cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CommentDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Comment") - { - throw new InvalidOperationException($"The CommentDeSerializer can only be used to deserialize objects of type IComment, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Comment(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Comment cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Comment dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - var propertyValue = arrayItem.GetString(); + annotatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) + { + dtoInstance.annotatedElement.Add(annotatedElementValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - foreach (var arrayItem in annotatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) - { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + annotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.annotatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("body"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + bodySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); - } + var bodyValue = reader.GetString(); + + if (bodyValue != null) + { + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the annotation Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); - if (propertyValue != null) + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("locale"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + localeSeen = true; + reader.Read(); + + dtoInstance.Locale = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("locale"u8, out var localeProperty)) - { - dtoInstance.Locale = localeProperty.GetString(); - } - else - { - logger.LogDebug("the locale Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the Comment: {Id}", dtoInstance.Id); } - else + if (!annotatedElementSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the annotatedElement Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Comment: {Id}", dtoInstance.Id); } - } - else + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!localeSeen) + { + logger.LogDebug("the locale Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Comment dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var localeSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the owningRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Comment json object."); + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Comment cannot be deserialized"); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Comment dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("body"u8)) { - var propertyValue = arrayItem.GetString(); + bodySeen = true; + reader.Read(); + + var bodyValue = reader.GetString(); - if (propertyValue != null) + if (bodyValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("locale"u8, out var localeProperty)) - { - dtoInstance.Locale = localeProperty.GetString(); - } - else - { - logger.LogDebug("the locale Json property was not found in the Comment: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("locale"u8)) + { + localeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + dtoInstance.Locale = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!localeSeen) + { + logger.LogDebug("the locale Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Comment: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernDefinitionDeSerializer.cs index a6916fa2d..8fb185d2c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernDefinitionDeSerializer.cs @@ -22,2036 +22,2437 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConcernDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConcernDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConcernDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConcernDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConcernDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConcernDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConcernDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConcernDefinition") - { - throw new InvalidOperationException($"The ConcernDefinitionDeSerializer can only be used to deserialize objects of type IConcernDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ConcernDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the ConcernDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConcernDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) - { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("reqId"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + reqIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConcernDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ConcernDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConcernDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the ConcernDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.text.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the text Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the actorParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConcernDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConcernDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + var elementIdValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - } - } -} + dtoInstance.ReqId = reader.GetString(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ConcernDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernUsageDeSerializer.cs index 6b9cd1f6f..611ebb90a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConcernUsageDeSerializer.cs @@ -22,2649 +22,3170 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConcernUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConcernUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConcernUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConcernUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConcernUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConcernUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConcernUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConcernUsage") - { - throw new InvalidOperationException($"The ConcernUsageDeSerializer can only be used to deserialize objects of type IConcernUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var chainingFeatureSeen = false; + var concernDefinitionSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConcernUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ConcernUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConcernUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - var propertyValue = arrayItem.GetString(); + actorParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("concernDefinition"u8, out var concernDefinitionProperty)) - { - if (concernDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.concernDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (concernDefinitionProperty.TryGetProperty("@id"u8, out var concernDefinitionExternalIdProperty)) - { - var propertyValue = concernDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.concernDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the concernDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("concernDefinition"u8)) { - dtoInstance.crossFeature = null; + concernDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.concernDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var concernDefinitionValue)) + { + dtoInstance.concernDefinition = concernDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } - } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ConcernUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConcernUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + isPortionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedDifferencing"u8)) + { + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) { - var propertyValue = ownerExternalIdProperty.GetString(); + dtoInstance.owningDefinition = owningDefinitionValue; + } - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) + { + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningMembership = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("reqId"u8)) { - dtoInstance.owningNamespace = null; + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the ConcernUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningUsageExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + logger.LogDebug("the ConcernUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = parameterExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ConcernUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) - { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the ConcernUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.text.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the text Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actorParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!concernDefinitionSeen) + { + logger.LogDebug("the concernDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); } - } - else + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConcernUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConcernUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.ConcernUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - } - } -} + continue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ConcernUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortDefinitionDeSerializer.cs index 3efe6b481..ddb63aa9c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortDefinitionDeSerializer.cs @@ -22,1843 +22,2211 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Ports; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConjugatedPortDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConjugatedPortDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Ports; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConjugatedPortDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConjugatedPortDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugatedPortDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugatedPortDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConjugatedPortDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConjugatedPortDefinition") + var aliasIdsSeen = false; + var conjugatedPortDefinitionSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var originalPortDefinitionSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedPortConjugatorSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The ConjugatedPortDefinitionDeSerializer can only be used to deserialize objects of type IConjugatedPortDefinition, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConjugatedPortDefinition json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConjugatedPortDefinition cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConjugatedPortDefinition cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("conjugatedPortDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + conjugatedPortDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.conjugatedPortDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedPortDefinitionValue)) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.conjugatedPortDefinition = conjugatedPortDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedPortDefinition"u8, out var conjugatedPortDefinitionProperty)) - { - if (conjugatedPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.conjugatedPortDefinition = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conjugatedPortDefinitionProperty.TryGetProperty("@id"u8, out var conjugatedPortDefinitionExternalIdProperty)) - { - var propertyValue = conjugatedPortDefinitionExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.conjugatedPortDefinition = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("originalPortDefinition"u8, out var originalPortDefinitionProperty)) - { - if (originalPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.originalPortDefinition = Guid.Empty; - logger.LogDebug($"the ConjugatedPortDefinition.originalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("originalPortDefinition"u8)) { - if (originalPortDefinitionProperty.TryGetProperty("@id"u8, out var originalPortDefinitionExternalIdProperty)) + originalPortDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = originalPortDefinitionExternalIdProperty.GetString(); + dtoInstance.originalPortDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.originalPortDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the ConjugatedPortDefinition.originalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var originalPortDefinitionValue)) + { + dtoInstance.originalPortDefinition = originalPortDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the originalPortDefinition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } - } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPortConjugator"u8, out var ownedPortConjugatorProperty)) - { - if (ownedPortConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedPortConjugator = Guid.Empty; - logger.LogDebug($"the ConjugatedPortDefinition.ownedPortConjugator property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedPortConjugator"u8)) { - if (ownedPortConjugatorProperty.TryGetProperty("@id"u8, out var ownedPortConjugatorExternalIdProperty)) + ownedPortConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedPortConjugatorExternalIdProperty.GetString(); + dtoInstance.ownedPortConjugator = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedPortConjugator = Guid.Parse(propertyValue); + logger.LogDebug("the ConjugatedPortDefinition.ownedPortConjugator property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortConjugatorValue)) + { + dtoInstance.ownedPortConjugator = ownedPortConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedPortConjugator Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("unioningType"u8)) + { + unioningTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!conjugatedPortDefinitionSeen) + { + logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!originalPortDefinitionSeen) + { + logger.LogDebug("the originalPortDefinition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortConjugatorSeen) + { + logger.LogDebug("the ownedPortConjugator Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the ConjugatedPortDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConjugatedPortDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortTypingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortTypingDeSerializer.cs index a239eaede..e45d7268b 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortTypingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugatedPortTypingDeSerializer.cs @@ -22,802 +22,968 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Ports; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConjugatedPortTypingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConjugatedPortTyping DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Ports; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConjugatedPortTypingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConjugatedPortTyping DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugatedPortTypingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugatedPortTypingDeSerializer"); + var aliasIdsSeen = false; + var conjugatedPortDefinitionSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portDefinitionSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConjugatedPortTyping json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConjugatedPortTyping cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConjugatedPortTypingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ConjugatedPortTyping") - { - throw new InvalidOperationException($"The ConjugatedPortTypingDeSerializer can only be used to deserialize objects of type IConjugatedPortTyping, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConjugatedPortTyping cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("conjugatedPortDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + conjugatedPortDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ConjugatedPortDefinition = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the ConjugatedPortTyping.ConjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedPortDefinitionValue)) + { + dtoInstance.ConjugatedPortDefinition = conjugatedPortDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedPortDefinition"u8, out var conjugatedPortDefinitionProperty)) - { - if (conjugatedPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ConjugatedPortDefinition = Guid.Empty; - logger.LogDebug($"the ConjugatedPortTyping.ConjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conjugatedPortDefinitionProperty.TryGetProperty("@id"u8, out var conjugatedPortDefinitionExternalIdProperty)) - { - var propertyValue = conjugatedPortDefinitionExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ConjugatedPortDefinition = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeature = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeature"u8)) { - dtoInstance.owningMembership = null; + owningFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) + { + dtoInstance.owningFeature = owningFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("portDefinition"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + portDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.portDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the ConjugatedPortTyping.portDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var portDefinitionValue)) + { + dtoInstance.portDefinition = portDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portDefinition"u8, out var portDefinitionProperty)) - { - if (portDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.portDefinition = Guid.Empty; - logger.LogDebug($"the ConjugatedPortTyping.portDefinition property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (portDefinitionProperty.TryGetProperty("@id"u8, out var portDefinitionExternalIdProperty)) - { - var propertyValue = portDefinitionExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.portDefinition = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the portDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("typedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConjugatedPortTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) - { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) + if (!conjugatedPortDefinitionSeen) { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the ConjugatedPortTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) - { - var propertyValue = typedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the typedFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping dtoInstance, JsonElement jsonElement, ILogger logger) + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!portDefinitionSeen) + { + logger.LogDebug("the portDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.ConjugatedPortTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var conjugatedPortDefinitionSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the ConjugatedPortTyping json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConjugatedPortTyping cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedPortDefinition"u8, out var conjugatedPortDefinitionProperty)) - { - if (conjugatedPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ConjugatedPortDefinition = Guid.Empty; - logger.LogDebug($"the ConjugatedPortTyping.ConjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("conjugatedPortDefinition"u8)) { - if (conjugatedPortDefinitionProperty.TryGetProperty("@id"u8, out var conjugatedPortDefinitionExternalIdProperty)) + conjugatedPortDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = conjugatedPortDefinitionExternalIdProperty.GetString(); + dtoInstance.ConjugatedPortDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ConjugatedPortDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the ConjugatedPortTyping.ConjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedPortDefinitionValue)) + { + dtoInstance.ConjugatedPortDefinition = conjugatedPortDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) - { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the ConjugatedPortTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("typedFeature"u8)) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typedFeatureExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the ConjugatedPortTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the typedFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!conjugatedPortDefinitionSeen) + { + logger.LogDebug("the conjugatedPortDefinition Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the ConjugatedPortTyping: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugationDeSerializer.cs index b862dcd2d..cb200874f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConjugationDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConjugationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConjugation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConjugationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConjugation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Conjugation(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Conjugation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConjugationDeSerializer"); + var aliasIdsSeen = false; + var conjugatedTypeSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var originalTypeSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Conjugation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Conjugation cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConjugationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Conjugation") - { - throw new InvalidOperationException($"The ConjugationDeSerializer can only be used to deserialize objects of type IConjugation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Conjugation(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Conjugation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Conjugation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("conjugatedType"u8)) { - var propertyValue = arrayItem.GetString(); + conjugatedTypeSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ConjugatedType = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the Conjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); + } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedTypeValue)) + { + dtoInstance.ConjugatedType = conjugatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedType"u8, out var conjugatedTypeProperty)) - { - if (conjugatedTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ConjugatedType = Guid.Empty; - logger.LogDebug($"the Conjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conjugatedTypeProperty.TryGetProperty("@id"u8, out var conjugatedTypeExternalIdProperty)) - { - var propertyValue = conjugatedTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ConjugatedType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the conjugatedType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("originalType"u8, out var originalTypeProperty)) - { - if (originalTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.OriginalType = Guid.Empty; - logger.LogDebug($"the Conjugation.OriginalType property was not found in the Json. The value is set to Guid.Empty"); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("originalType"u8)) { - if (originalTypeProperty.TryGetProperty("@id"u8, out var originalTypeExternalIdProperty)) + originalTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = originalTypeExternalIdProperty.GetString(); + dtoInstance.OriginalType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OriginalType = Guid.Parse(propertyValue); + logger.LogDebug("the Conjugation.OriginalType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var originalTypeValue)) + { + dtoInstance.OriginalType = originalTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the originalType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.owningType = null; + logger.LogDebug("the aliasIds Json property was not found in the Conjugation: {Id}", dtoInstance.Id); } - else + if (!conjugatedTypeSeen) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the conjugatedType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!originalTypeSeen) + { + logger.LogDebug("the originalType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Conjugation dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var conjugatedTypeSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var originalTypeSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Conjugation json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Conjugation cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Conjugation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedType"u8, out var conjugatedTypeProperty)) - { - if (conjugatedTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("conjugatedType"u8)) { - dtoInstance.ConjugatedType = Guid.Empty; - logger.LogDebug($"the Conjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (conjugatedTypeProperty.TryGetProperty("@id"u8, out var conjugatedTypeExternalIdProperty)) + conjugatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = conjugatedTypeExternalIdProperty.GetString(); + dtoInstance.ConjugatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ConjugatedType = Guid.Parse(propertyValue); + logger.LogDebug("the Conjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the conjugatedType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedTypeValue)) + { + dtoInstance.ConjugatedType = conjugatedTypeValue; + } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("originalType"u8, out var originalTypeProperty)) - { - if (originalTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.OriginalType = Guid.Empty; - logger.LogDebug($"the Conjugation.OriginalType property was not found in the Json. The value is set to Guid.Empty"); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (originalTypeProperty.TryGetProperty("@id"u8, out var originalTypeExternalIdProperty)) - { - var propertyValue = originalTypeExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OriginalType = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the originalType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("originalType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + originalTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.OriginalType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Conjugation.OriginalType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var originalTypeValue)) + { + dtoInstance.OriginalType = originalTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!conjugatedTypeSeen) + { + logger.LogDebug("the conjugatedType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!originalTypeSeen) + { + logger.LogDebug("the originalType Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Conjugation: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionDefinitionDeSerializer.cs index b9782a405..45c6d35e6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionDefinitionDeSerializer.cs @@ -22,1993 +22,2373 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Connections; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConnectionDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConnectionDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Connections; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConnectionDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConnectionDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectionDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectionDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConnectionDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConnectionDefinition") - { - throw new InvalidOperationException($"The ConnectionDefinitionDeSerializer can only be used to deserialize objects of type IConnectionDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var connectionEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ConnectionDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the ConnectionDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConnectionDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectionEnd"u8, out var connectionEndProperty)) - { - foreach (var arrayItem in connectionEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("connectionEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectionEndExternalIdProperty)) - { - var propertyValue = connectionEndExternalIdProperty.GetString(); + connectionEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectionEndValue)) { - dtoInstance.connectionEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectionEnd.Add(connectionEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the connectionEnd Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedCase"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedView"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedView.Add(ownedViewValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) - { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.sourceType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.sourceType = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the sourceType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("sourceType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) { - var propertyValue = targetTypeExternalIdProperty.GetString(); + dtoInstance.sourceType = sourceTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("targetType"u8)) + { + targetTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); + dtoInstance.targetType.Add(targetTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!connectionEndSeen) + { + logger.LogDebug("the connectionEnd Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the ConnectionDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConnectionDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsIndividual = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConnectionDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionUsageDeSerializer.cs index 611ba2e16..59b25e22f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectionUsageDeSerializer.cs @@ -22,2706 +22,3221 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Connections; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConnectionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConnectionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Connections; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConnectionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConnectionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConnectionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConnectionUsage") - { - throw new InvalidOperationException($"The ConnectionUsageDeSerializer can only be used to deserialize objects of type IConnectionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectionDefinitionSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var partDefinitionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConnectionUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ConnectionUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConnectionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectionDefinition"u8, out var connectionDefinitionProperty)) - { - foreach (var arrayItem in connectionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectionDefinitionExternalIdProperty)) - { - var propertyValue = connectionDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the connectionDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("connectionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + connectionDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectionDefinitionValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectionDefinition.Add(connectionDefinitionValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ConnectionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the ConnectionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) - { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelatedElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningType = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("partDefinition"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + partDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var partDefinitionValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.partDefinition.Add(partDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("partDefinition"u8, out var partDefinitionProperty)) - { - foreach (var arrayItem in partDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var partDefinitionExternalIdProperty)) - { - var propertyValue = partDefinitionExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.partDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the partDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) - { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceFeature = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!connectionDefinitionSeen) + { + logger.LogDebug("the connectionDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!partDefinitionSeen) + { + logger.LogDebug("the partDefinition Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.ConnectionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConnectionUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConnectionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConnectionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectorDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectorDeSerializer.cs index 59c31553b..75ab5cb89 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectorDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConnectorDeSerializer.cs @@ -22,1888 +22,2271 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Connectors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConnectorDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConnector DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Connectors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConnectorDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConnector DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectorDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.Connector(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Connector dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConnectorDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConnectorDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Connector") - { - throw new InvalidOperationException($"The ConnectorDeSerializer can only be used to deserialize objects of type IConnector, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.Connector(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + var aliasIdsSeen = false; + var associationSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Connector json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Connector cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Connector cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Connector dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("association"u8)) { - var propertyValue = arrayItem.GetString(); + associationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("association"u8, out var associationProperty)) - { - foreach (var arrayItem in associationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var associationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = associationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationValue)) { - dtoInstance.association.Add(Guid.Parse(propertyValue)); + dtoInstance.association.Add(associationValue); } } + + continue; } - } - else - { - logger.LogDebug("the association Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectorEnd.Add(connectorEndValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + defaultFeaturingTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) + { + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Connector.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Connector.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the Connector: {Id}", dtoInstance.Id); } - else + if (!associationSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the association Json property was not found in the Connector: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); } - } - else + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Connector dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the targetFeature Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Connector json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Connector cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Connector dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Connector: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Connector: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintDefinitionDeSerializer.cs index 69dd436d8..a44c7b3fd 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintDefinitionDeSerializer.cs @@ -22,1894 +22,2270 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Constraints; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConstraintDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConstraintDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Constraints; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConstraintDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConstraintDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConstraintDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConstraintDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the ConstraintDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConstraintDefinition json object."); + } - if (@type.GetString() != "ConstraintDefinition") - { - throw new InvalidOperationException($"The ConstraintDefinitionDeSerializer can only be used to deserialize objects of type IConstraintDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConstraintDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the ConstraintDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ConstraintDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ConstraintDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); } - } - else + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the usage Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConstraintDefinition json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ConstraintDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstraintDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintUsageDeSerializer.cs index 2e8564e4e..979b3a591 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstraintUsageDeSerializer.cs @@ -22,2507 +22,3003 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Constraints; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ConstraintUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IConstraintUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Constraints; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ConstraintUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConstraintUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConstraintUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConstraintUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConstraintUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConstraintUsage") - { - throw new InvalidOperationException($"The ConstraintUsageDeSerializer can only be used to deserialize objects of type IConstraintUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var constraintDefinitionSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConstraintUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ConstraintUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConstraintUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("constraintDefinition"u8, out var constraintDefinitionProperty)) - { - if (constraintDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.constraintDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (constraintDefinitionProperty.TryGetProperty("@id"u8, out var constraintDefinitionExternalIdProperty)) - { - var propertyValue = constraintDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.constraintDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the constraintDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("constraintDefinition"u8)) { - dtoInstance.crossFeature = null; + constraintDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.constraintDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var constraintDefinitionValue)) + { + dtoInstance.constraintDefinition = constraintDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ConstraintUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConstraintUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.mayTimeVary = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningType = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConstraintUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ConstraintUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!constraintDefinitionSeen) + { + logger.LogDebug("the constraintDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Constraints.ConstraintUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConstraintUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConstraintUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ConstraintUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstructorExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstructorExpressionDeSerializer.cs index 73b531010..b15a6b7e6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstructorExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ConstructorExpressionDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Expressions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class ConstructorExpressionDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class ConstructorExpressionDeSerializer /// /// an instance of /// - internal static IConstructorExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IConstructorExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ConstructorExpressionDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ConstructorExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ConstructorExpression") - { - throw new InvalidOperationException($"The ConstructorExpressionDeSerializer can only be used to deserialize objects of type IConstructorExpression, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.ConstructorExpression(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ConstructorExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1710 +87,2103 @@ internal static IConstructorExpression DeSerialize(JsonElement jsonElement, Seri /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.ConstructorExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.ConstructorExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConstructorExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConstructorExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = argumentExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.argument.Add(argumentValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ConstructorExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the ConstructorExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inputExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ConstructorExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the ConstructorExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) - { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningNamespace = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the ConstructorExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ConstructorExpression.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (!argumentSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the argument Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the type Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.ConstructorExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.ConstructorExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ConstructorExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ConstructorExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ConstructorExpression: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CrossSubsettingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CrossSubsettingDeSerializer.cs index 6c1ad3e97..b6b7a9a1a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CrossSubsettingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/CrossSubsettingDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Core.Features; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class CrossSubsettingDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class CrossSubsettingDeSerializer /// /// an instance of /// - internal static ICrossSubsetting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ICrossSubsetting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("CrossSubsettingDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the CrossSubsettingDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "CrossSubsetting") - { - throw new InvalidOperationException($"The CrossSubsettingDeSerializer can only be used to deserialize objects of type ICrossSubsetting, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.CrossSubsetting(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the CrossSubsetting cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,644 +87,823 @@ internal static ICrossSubsetting DeSerialize(JsonElement jsonElement, Serializat /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.CrossSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.CrossSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var crossedFeatureSeen = false; + var crossingFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CrossSubsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CrossSubsetting cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossedFeature"u8, out var crossedFeatureProperty)) - { - if (crossedFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.CrossedFeature = Guid.Empty; - logger.LogDebug($"the CrossSubsetting.CrossedFeature property was not found in the Json. The value is set to Guid.Empty"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (crossedFeatureProperty.TryGetProperty("@id"u8, out var crossedFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = crossedFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.CrossedFeature = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the crossedFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossingFeature"u8, out var crossingFeatureProperty)) - { - if (crossingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossingFeature = Guid.Empty; - logger.LogDebug($"the CrossSubsetting.crossingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("crossedFeature"u8)) { - if (crossingFeatureProperty.TryGetProperty("@id"u8, out var crossingFeatureExternalIdProperty)) + crossedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = crossingFeatureExternalIdProperty.GetString(); + dtoInstance.CrossedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.crossingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the CrossSubsetting.CrossedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the crossingFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossedFeatureValue)) + { + dtoInstance.CrossedFeature = crossedFeatureValue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + crossingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = documentationExternalIdProperty.GetString(); + dtoInstance.crossingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the CrossSubsetting.crossingFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossingFeatureValue)) + { + dtoInstance.crossingFeature = crossingFeatureValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("documentation"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) + { + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.owner = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.OwningRelatedElement = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the textualRepresentation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!crossedFeatureSeen) + { + logger.LogDebug("the crossedFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!crossingFeatureSeen) + { + logger.LogDebug("the crossingFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.CrossSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.CrossSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var crossedFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the CrossSubsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the CrossSubsetting cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossedFeature"u8, out var crossedFeatureProperty)) - { - if (crossedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.CrossedFeature = Guid.Empty; - logger.LogDebug($"the CrossSubsetting.CrossedFeature property was not found in the Json. The value is set to Guid.Empty"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("crossedFeature"u8)) { - if (crossedFeatureProperty.TryGetProperty("@id"u8, out var crossedFeatureExternalIdProperty)) + crossedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = crossedFeatureExternalIdProperty.GetString(); + dtoInstance.CrossedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.CrossedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the CrossSubsetting.CrossedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossedFeatureValue)) + { + dtoInstance.CrossedFeature = crossedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the crossedFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); } - else + if (!crossedFeatureSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the crossedFeature Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the CrossSubsetting: {Id}", dtoInstance.Id); - } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DataTypeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DataTypeDeSerializer.cs index b4ddf55e7..a88322a4a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DataTypeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DataTypeDeSerializer.cs @@ -22,1149 +22,1394 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.DataTypes; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DataTypeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDataType DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.DataTypes; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DataTypeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDataType DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DataTypeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.DataTypes.DataType(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.DataTypes.DataType dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DataTypeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DataTypeDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the DataType json object."); + } - if (@type.GetString() != "DataType") - { - throw new InvalidOperationException($"The DataTypeDeSerializer can only be used to deserialize objects of type IDataType, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.DataTypes.DataType(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the DataType cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the DataType cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.DataTypes.DataType dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the shortName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.DataTypes.DataType dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the DataType json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the DataType cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.DataTypes.DataType dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the DataType: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the DataType: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DeSerializationProvider.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DeSerializationProvider.cs index 8836d02f7..3d52c8897 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DeSerializationProvider.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DeSerializationProvider.cs @@ -41,7 +41,7 @@ internal static class DeSerializationProvider /// /// a dictionary that provides delegates for deserialization /// - private static readonly Dictionary> DeSerializerActionMap = new Dictionary> + private static readonly Dictionary DeSerializerActionMap = new Dictionary { { "AcceptActionUsage", AcceptActionUsageDeSerializer.DeSerialize }, { "ActionDefinition", ActionDefinitionDeSerializer.DeSerialize }, @@ -213,19 +213,19 @@ internal static class DeSerializationProvider }; /// - /// Provides the delegate for the + /// Provides the for the /// that is to be deserialized /// /// /// The name of the subject that is to be serialized /// /// - /// A Delegate of + /// A /// /// /// Thrown when the is not supported. /// - internal static Func Provide(string typeName) + internal static DeSerializeDelegate Provide(string typeName) { if (!DeSerializerActionMap.TryGetValue(typeName, out var func)) { diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DecisionNodeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DecisionNodeDeSerializer.cs index c45417c15..4a4e2c9ed 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DecisionNodeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DecisionNodeDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DecisionNodeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDecisionNode DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DecisionNodeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDecisionNode DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DecisionNodeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.DecisionNode(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.DecisionNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DecisionNodeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DecisionNodeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "DecisionNode") - { - throw new InvalidOperationException($"The DecisionNodeDeSerializer can only be used to deserialize objects of type IDecisionNode, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.DecisionNode(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the DecisionNode cannot be deserialized"); + throw new JsonException("Expected a property name in the DecisionNode json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the DecisionNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.DecisionNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the DecisionNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the DecisionNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.DecisionNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.DecisionNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the DecisionNode json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the DecisionNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the DecisionNode: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DefinitionDeSerializer.cs index 707d18b7b..8b05396fe 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DefinitionDeSerializer.cs @@ -22,1793 +22,2143 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the DefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Definition json object."); + } - if (@type.GetString() != "Definition") - { - throw new InvalidOperationException($"The DefinitionDeSerializer can only be used to deserialize objects of type IDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Definition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Definition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Definition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Definition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Definition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Definition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Definition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DependencyDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DependencyDeSerializer.cs index d56719b81..3b87af3db 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DependencyDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DependencyDeSerializer.cs @@ -22,733 +22,903 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Dependencies; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DependencyDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDependency DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Dependencies; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DependencyDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDependency DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DependencyDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Dependencies.Dependency(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DependencyDeSerializer"); + var aliasIdsSeen = false; + var clientSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var supplierSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Dependency json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DependencyDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Dependency") - { - throw new InvalidOperationException($"The DependencyDeSerializer can only be used to deserialize objects of type IDependency, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Dependencies.Dependency(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("client"u8)) { - var propertyValue = arrayItem.GetString(); + clientSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var clientValue)) + { + dtoInstance.Client.Add(clientValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("client"u8, out var clientProperty)) - { - foreach (var arrayItem in clientProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var clientExternalIdProperty)) - { - var propertyValue = clientExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.Client.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("supplier"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + supplierSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var supplierValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.Supplier.Add(supplierValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!clientSeen) + { + logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!supplierSeen) + { + logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var clientSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var supplierSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Dependency json object."); + } - if (jsonElement.TryGetProperty("supplier"u8, out var supplierProperty)) - { - foreach (var arrayItem in supplierProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var supplierExternalIdProperty)) - { - var propertyValue = supplierExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.Supplier.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Dependency cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Dependencies.Dependency dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("client"u8, out var clientProperty)) - { - foreach (var arrayItem in clientProperty.EnumerateArray()) + if (reader.ValueTextEquals("client"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var clientExternalIdProperty)) - { - var propertyValue = clientExternalIdProperty.GetString(); + clientSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var clientValue)) { - dtoInstance.Client.Add(Guid.Parse(propertyValue)); + dtoInstance.Client.Add(clientValue); } } + + continue; } - } - else - { - logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("supplier"u8, out var supplierProperty)) - { - foreach (var arrayItem in supplierProperty.EnumerateArray()) + if (reader.ValueTextEquals("supplier"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var supplierExternalIdProperty)) - { - var propertyValue = supplierExternalIdProperty.GetString(); + supplierSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var supplierValue)) { - dtoInstance.Supplier.Add(Guid.Parse(propertyValue)); + dtoInstance.Supplier.Add(supplierValue); } } + + continue; } - } - else - { - logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!clientSeen) + { + logger.LogDebug("the client Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + if (!supplierSeen) + { + logger.LogDebug("the supplier Json property was not found in the Dependency: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DifferencingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DifferencingDeSerializer.cs index f458d1d92..8161d7655 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DifferencingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DifferencingDeSerializer.cs @@ -22,728 +22,892 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DifferencingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDifferencing DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DifferencingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDifferencing DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DifferencingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Differencing(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Differencing dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DifferencingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeDifferencedSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Differencing json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Differencing cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DifferencingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Differencing") - { - throw new InvalidOperationException($"The DifferencingDeSerializer can only be used to deserialize objects of type IDifferencing, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Differencing(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Differencing cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Differencing dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - if (differencingTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.DifferencingType = Guid.Empty; - logger.LogDebug($"the Differencing.DifferencingType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("differencingType"u8)) { - if (differencingTypeProperty.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + differencingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.DifferencingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.DifferencingType = Guid.Parse(propertyValue); + logger.LogDebug("the Differencing.DifferencingType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) + { + dtoInstance.DifferencingType = differencingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("typeDifferenced"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typeDifferencedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.typeDifferenced = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Differencing.typeDifferenced property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeDifferencedValue)) + { + dtoInstance.typeDifferenced = typeDifferencedValue; + } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Differencing: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("typeDifferenced"u8, out var typeDifferencedProperty)) - { - if (typeDifferencedProperty.ValueKind == JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.typeDifferenced = Guid.Empty; - logger.LogDebug($"the Differencing.typeDifferenced property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the declaredName Json property was not found in the Differencing: {Id}", dtoInstance.Id); } - else + if (!declaredShortNameSeen) { - if (typeDifferencedProperty.TryGetProperty("@id"u8, out var typeDifferencedExternalIdProperty)) - { - var propertyValue = typeDifferencedExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.typeDifferenced = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredShortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the typeDifferenced Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Differencing dtoInstance, JsonElement jsonElement, ILogger logger) + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!typeDifferencedSeen) + { + logger.LogDebug("the typeDifferenced Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Differencing dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Differencing json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Differencing cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - if (differencingTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.DifferencingType = Guid.Empty; - logger.LogDebug($"the Differencing.DifferencingType property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (differencingTypeProperty.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.DifferencingType = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + differencingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.DifferencingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Differencing.DifferencingType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) + { + dtoInstance.DifferencingType = differencingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - dtoInstance.OwningRelationship = null; + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) + { + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Differencing: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DisjoiningDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DisjoiningDeSerializer.cs index 1791b687c..cb38a6fdc 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DisjoiningDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DisjoiningDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DisjoiningDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDisjoining DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DisjoiningDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDisjoining DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DisjoiningDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Disjoining(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Disjoining dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DisjoiningDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var disjoiningTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeDisjoinedSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Disjoining json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Disjoining cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DisjoiningDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Disjoining") - { - throw new InvalidOperationException($"The DisjoiningDeSerializer can only be used to deserialize objects of type IDisjoining, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Disjoining(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Disjoining cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Disjoining dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("disjoiningType"u8, out var disjoiningTypeProperty)) - { - if (disjoiningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.DisjoiningType = Guid.Empty; - logger.LogDebug($"the Disjoining.DisjoiningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("disjoiningType"u8)) { - if (disjoiningTypeProperty.TryGetProperty("@id"u8, out var disjoiningTypeExternalIdProperty)) + disjoiningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = disjoiningTypeExternalIdProperty.GetString(); + dtoInstance.DisjoiningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.DisjoiningType = Guid.Parse(propertyValue); + logger.LogDebug("the Disjoining.DisjoiningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var disjoiningTypeValue)) + { + dtoInstance.DisjoiningType = disjoiningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the disjoiningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("typeDisjoined"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typeDisjoinedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.TypeDisjoined = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Disjoining.TypeDisjoined property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeDisjoinedValue)) + { + dtoInstance.TypeDisjoined = typeDisjoinedValue; + } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Disjoining: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("typeDisjoined"u8, out var typeDisjoinedProperty)) - { - if (typeDisjoinedProperty.ValueKind == JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.TypeDisjoined = Guid.Empty; - logger.LogDebug($"the Disjoining.TypeDisjoined property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the declaredName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); } - else + if (!declaredShortNameSeen) { - if (typeDisjoinedProperty.TryGetProperty("@id"u8, out var typeDisjoinedExternalIdProperty)) - { - var propertyValue = typeDisjoinedExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.TypeDisjoined = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredShortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the typeDisjoined Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Disjoining dtoInstance, JsonElement jsonElement, ILogger logger) + if (!disjoiningTypeSeen) + { + logger.LogDebug("the disjoiningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!typeDisjoinedSeen) + { + logger.LogDebug("the typeDisjoined Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Disjoining dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var disjoiningTypeSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var typeDisjoinedSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Disjoining json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Disjoining cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("disjoiningType"u8, out var disjoiningTypeProperty)) - { - if (disjoiningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.DisjoiningType = Guid.Empty; - logger.LogDebug($"the Disjoining.DisjoiningType property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (disjoiningTypeProperty.TryGetProperty("@id"u8, out var disjoiningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = disjoiningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.DisjoiningType = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the disjoiningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("disjoiningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + disjoiningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.DisjoiningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Disjoining.DisjoiningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var disjoiningTypeValue)) + { + dtoInstance.DisjoiningType = disjoiningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("typeDisjoined"u8, out var typeDisjoinedProperty)) - { - if (typeDisjoinedProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.TypeDisjoined = Guid.Empty; - logger.LogDebug($"the Disjoining.TypeDisjoined property was not found in the Json. The value is set to Guid.Empty"); + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("typeDisjoined"u8)) { - if (typeDisjoinedProperty.TryGetProperty("@id"u8, out var typeDisjoinedExternalIdProperty)) + typeDisjoinedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typeDisjoinedExternalIdProperty.GetString(); + dtoInstance.TypeDisjoined = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.TypeDisjoined = Guid.Parse(propertyValue); + logger.LogDebug("the Disjoining.TypeDisjoined property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeDisjoinedValue)) + { + dtoInstance.TypeDisjoined = typeDisjoinedValue; + } + + continue; } - } - else - { - logger.LogDebug("the typeDisjoined Json property was not found in the Disjoining: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!disjoiningTypeSeen) + { + logger.LogDebug("the disjoiningType Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + if (!typeDisjoinedSeen) + { + logger.LogDebug("the typeDisjoined Json property was not found in the Disjoining: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DocumentationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DocumentationDeSerializer.cs index 7d4ba40db..0308d030e 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DocumentationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/DocumentationDeSerializer.cs @@ -22,656 +22,827 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Annotations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class DocumentationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IDocumentation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Annotations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class DocumentationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IDocumentation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DocumentationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Documentation(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Documentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("DocumentationDeSerializer"); + var aliasIdsSeen = false; + var annotationSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var documentedElementSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var localeSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Documentation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Documentation cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the DocumentationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Documentation") - { - throw new InvalidOperationException($"The DocumentationDeSerializer can only be used to deserialize objects of type IDocumentation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.Documentation(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Documentation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Documentation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotation"u8)) { - var propertyValue = arrayItem.GetString(); + annotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) + { + dtoInstance.annotation.Add(annotationValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("body"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + bodySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); - } + var bodyValue = reader.GetString(); + + if (bodyValue != null) + { + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the annotation Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentedElement"u8, out var documentedElementProperty)) - { - if (documentedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.documentedElement = Guid.Empty; - logger.LogDebug($"the Documentation.documentedElement property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("documentedElement"u8)) { - if (documentedElementProperty.TryGetProperty("@id"u8, out var documentedElementExternalIdProperty)) + documentedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = documentedElementExternalIdProperty.GetString(); + dtoInstance.documentedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.documentedElement = Guid.Parse(propertyValue); + logger.LogDebug("the Documentation.documentedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentedElementValue)) + { + dtoInstance.documentedElement = documentedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the documentedElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("locale"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + localeSeen = true; + reader.Read(); + + dtoInstance.Locale = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("locale"u8, out var localeProperty)) - { - dtoInstance.Locale = localeProperty.GetString(); - } - else - { - logger.LogDebug("the locale Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the Documentation: {Id}", dtoInstance.Id); } - else + if (!annotationSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the annotation Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!documentedElementSeen) + { + logger.LogDebug("the documentedElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Documentation: {Id}", dtoInstance.Id); } - } - else + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!localeSeen) + { + logger.LogDebug("the locale Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Documentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var localeSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the owningRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Documentation json object."); + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Documentation cannot be deserialized"); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.Documentation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("body"u8)) { - var propertyValue = arrayItem.GetString(); + bodySeen = true; + reader.Read(); + + var bodyValue = reader.GetString(); - if (propertyValue != null) + if (bodyValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("locale"u8, out var localeProperty)) - { - dtoInstance.Locale = localeProperty.GetString(); - } - else - { - logger.LogDebug("the locale Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("locale"u8)) + { + localeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + dtoInstance.Locale = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!localeSeen) + { + logger.LogDebug("the locale Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Documentation: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ElementFilterMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ElementFilterMembershipDeSerializer.cs index 8726a131d..4d400cbf5 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ElementFilterMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ElementFilterMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Packages; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ElementFilterMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IElementFilterMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Packages; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ElementFilterMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IElementFilterMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ElementFilterMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ElementFilterMembershipDeSerializer"); + var aliasIdsSeen = false; + var conditionSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var membershipOwningNamespaceSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ElementFilterMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ElementFilterMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ElementFilterMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ElementFilterMembership") - { - throw new InvalidOperationException($"The ElementFilterMembershipDeSerializer can only be used to deserialize objects of type IElementFilterMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ElementFilterMembership cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("condition"u8)) { - var propertyValue = arrayItem.GetString(); + conditionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.condition = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the ElementFilterMembership.condition property was not found in the Json. The value is set to Guid.Empty"); + } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conditionValue)) + { + dtoInstance.condition = conditionValue; + } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("condition"u8, out var conditionProperty)) - { - if (conditionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.condition = Guid.Empty; - logger.LogDebug($"the ElementFilterMembership.condition property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conditionProperty.TryGetProperty("@id"u8, out var conditionExternalIdProperty)) - { - var propertyValue = conditionExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.condition = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the condition Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the ElementFilterMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ElementFilterMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); - if (propertyValue != null) + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!conditionSeen) + { + logger.LogDebug("the condition Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ElementFilterMembership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ElementFilterMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.ElementFilterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ElementFilterMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EndFeatureMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EndFeatureMembershipDeSerializer.cs index 87e8d8a3f..32f62b643 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EndFeatureMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EndFeatureMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class EndFeatureMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IEndFeatureMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class EndFeatureMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IEndFeatureMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EndFeatureMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EndFeatureMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberFeatureSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EndFeatureMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EndFeatureMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the EndFeatureMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "EndFeatureMembership") - { - throw new InvalidOperationException($"The EndFeatureMembershipDeSerializer can only be used to deserialize objects of type IEndFeatureMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the EndFeatureMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ownedMemberElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberFeature"u8, out var ownedMemberFeatureProperty)) - { - if (ownedMemberFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.ownedMemberFeature = Guid.Empty; - logger.LogDebug($"the EndFeatureMembership.ownedMemberFeature property was not found in the Json. The value is set to Guid.Empty"); + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberFeature"u8)) { - if (ownedMemberFeatureProperty.TryGetProperty("@id"u8, out var ownedMemberFeatureExternalIdProperty)) + ownedMemberFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedMemberFeatureExternalIdProperty.GetString(); + dtoInstance.ownedMemberFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedMemberFeature = Guid.Parse(propertyValue); + logger.LogDebug("the EndFeatureMembership.ownedMemberFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberFeatureValue)) + { + dtoInstance.ownedMemberFeature = ownedMemberFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberFeature Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberName"u8)) + { + ownedMemberNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedMemberShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedMemberShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the EndFeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the EndFeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberFeatureSeen) + { + logger.LogDebug("the ownedMemberFeature Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EndFeatureMembership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EndFeatureMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.EndFeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the EndFeatureMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs index 200fbfb0d..e459a6b45 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationDefinitionDeSerializer.cs @@ -22,1793 +22,2143 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Enumerations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class EnumerationDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IEnumerationDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Enumerations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class EnumerationDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IEnumerationDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EnumerationDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EnumerationDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var enumeratedValueSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the EnumerationDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EnumerationDefinition json object."); + } - if (@type.GetString() != "EnumerationDefinition") - { - throw new InvalidOperationException($"The EnumerationDefinitionDeSerializer can only be used to deserialize objects of type IEnumerationDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("enumeratedValue"u8, out var enumeratedValueProperty)) - { - foreach (var arrayItem in enumeratedValueProperty.EnumerateArray()) + if (reader.ValueTextEquals("enumeratedValue"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var enumeratedValueExternalIdProperty)) - { - var propertyValue = enumeratedValueExternalIdProperty.GetString(); + enumeratedValueSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var enumeratedValueValue)) { - dtoInstance.enumeratedValue.Add(Guid.Parse(propertyValue)); + dtoInstance.enumeratedValue.Add(enumeratedValueValue); } } + + continue; } - } - else - { - logger.LogDebug("the enumeratedValue Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!enumeratedValueSeen) + { + logger.LogDebug("the enumeratedValue Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EnumerationDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EnumerationDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationUsageDeSerializer.cs index ed52eafaa..a99c3c3ad 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EnumerationUsageDeSerializer.cs @@ -22,2385 +22,2852 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Enumerations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class EnumerationUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IEnumerationUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Enumerations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class EnumerationUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IEnumerationUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EnumerationUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EnumerationUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the EnumerationUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "EnumerationUsage") - { - throw new InvalidOperationException($"The EnumerationUsageDeSerializer can only be used to deserialize objects of type IEnumerationUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var enumerationDefinitionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the EnumerationUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the EnumerationUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the EnumerationUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("enumerationDefinition"u8, out var enumerationDefinitionProperty)) - { - if (enumerationDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.enumerationDefinition = Guid.Empty; - logger.LogDebug($"the EnumerationUsage.enumerationDefinition property was not found in the Json. The value is set to Guid.Empty"); + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("enumerationDefinition"u8)) { - if (enumerationDefinitionProperty.TryGetProperty("@id"u8, out var enumerationDefinitionExternalIdProperty)) + enumerationDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = enumerationDefinitionExternalIdProperty.GetString(); + dtoInstance.enumerationDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.enumerationDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the EnumerationUsage.enumerationDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var enumerationDefinitionValue)) + { + dtoInstance.enumerationDefinition = enumerationDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the enumerationDefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the EnumerationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the EnumerationUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.multiplicity = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedView"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!crossFeatureSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the crossFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!differencingTypeSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the differencingType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!directedFeatureSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the directedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!directedUsageSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the directedUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); } - } - else + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!enumerationDefinitionSeen) + { + logger.LogDebug("the enumerationDefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Enumerations.EnumerationUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the isOrdered Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EnumerationUsage json object."); + } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EnumerationUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.OwningRelationship = null; + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isConstant"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsDerived = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) + { + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EnumerationUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EventOccurrenceUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EventOccurrenceUsageDeSerializer.cs index d6980a8b0..ab5ff7da1 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EventOccurrenceUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/EventOccurrenceUsageDeSerializer.cs @@ -22,2471 +22,2963 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Occurrences; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class EventOccurrenceUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IEventOccurrenceUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Occurrences; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class EventOccurrenceUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IEventOccurrenceUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EventOccurrenceUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("EventOccurrenceUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the EventOccurrenceUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "EventOccurrenceUsage") - { - throw new InvalidOperationException($"The EventOccurrenceUsageDeSerializer can only be used to deserialize objects of type IEventOccurrenceUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var eventOccurrenceSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the EventOccurrenceUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the EventOccurrenceUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the EventOccurrenceUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("eventOccurrence"u8, out var eventOccurrenceProperty)) - { - if (eventOccurrenceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.eventOccurrence = Guid.Empty; - logger.LogDebug($"the EventOccurrenceUsage.eventOccurrence property was not found in the Json. The value is set to Guid.Empty"); + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("eventOccurrence"u8)) { - if (eventOccurrenceProperty.TryGetProperty("@id"u8, out var eventOccurrenceExternalIdProperty)) + eventOccurrenceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = eventOccurrenceExternalIdProperty.GetString(); + dtoInstance.eventOccurrence = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.eventOccurrence = Guid.Parse(propertyValue); + logger.LogDebug("the EventOccurrenceUsage.eventOccurrence property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var eventOccurrenceValue)) + { + dtoInstance.eventOccurrence = eventOccurrenceValue; + } + + continue; } - } - else - { - logger.LogDebug("the eventOccurrence Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the EventOccurrenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the EventOccurrenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + individualDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the declaredShortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!eventOccurrenceSeen) + { + logger.LogDebug("the eventOccurrence Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.EventOccurrenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the direction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the EventOccurrenceUsage json object."); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the EventOccurrenceUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the EventOccurrenceUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExhibitStateUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExhibitStateUsageDeSerializer.cs index 8970fbbba..fa33c8d28 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExhibitStateUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExhibitStateUsageDeSerializer.cs @@ -22,2567 +22,3065 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ExhibitStateUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IExhibitStateUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ExhibitStateUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IExhibitStateUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ExhibitStateUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ExhibitStateUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ExhibitStateUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ExhibitStateUsage") - { - throw new InvalidOperationException($"The ExhibitStateUsageDeSerializer can only be used to deserialize objects of type IExhibitStateUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var doActionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var entryActionSeen = false; + var exhibitedStateSeen = false; + var exitActionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isParallelSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var stateDefinitionSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ExhibitStateUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ExhibitStateUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ExhibitStateUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; - } - else - { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("chainingFeature"u8)) + { + chainingFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("doAction"u8, out var doActionProperty)) - { - if (doActionProperty.ValueKind == JsonValueKind.Null) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.doAction = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("differencingType"u8)) { - if (doActionProperty.TryGetProperty("@id"u8, out var doActionExternalIdProperty)) - { - var propertyValue = doActionExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.doAction = Guid.Parse(propertyValue); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the doAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("doAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + doActionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.doAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var doActionValue)) + { + dtoInstance.doAction = doActionValue; } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("entryAction"u8, out var entryActionProperty)) - { - if (entryActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.entryAction = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (entryActionProperty.TryGetProperty("@id"u8, out var entryActionExternalIdProperty)) - { - var propertyValue = entryActionExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.entryAction = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the entryAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("exhibitedState"u8, out var exhibitedStateProperty)) - { - if (exhibitedStateProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.exhibitedState = Guid.Empty; - logger.LogDebug($"the ExhibitStateUsage.exhibitedState property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (exhibitedStateProperty.TryGetProperty("@id"u8, out var exhibitedStateExternalIdProperty)) - { - var propertyValue = exhibitedStateExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.exhibitedState = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the exhibitedState Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("exitAction"u8, out var exitActionProperty)) - { - if (exitActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("entryAction"u8)) { - dtoInstance.exitAction = null; + entryActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.entryAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var entryActionValue)) + { + dtoInstance.entryAction = entryActionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("exhibitedState"u8)) { - if (exitActionProperty.TryGetProperty("@id"u8, out var exitActionExternalIdProperty)) + exhibitedStateSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = exitActionExternalIdProperty.GetString(); + dtoInstance.exhibitedState = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.exitAction = Guid.Parse(propertyValue); + logger.LogDebug("the ExhibitStateUsage.exhibitedState property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var exhibitedStateValue)) + { + dtoInstance.exhibitedState = exhibitedStateValue; + } + + continue; } - } - else - { - logger.LogDebug("the exitAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("exitAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + exitActionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.exitAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var exitActionValue)) + { + dtoInstance.exitAction = exitActionValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ExhibitStateUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ExhibitStateUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isParallel"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isParallelSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) + { + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningNamespace = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("stateDefinition"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stateDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stateDefinitionValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.stateDefinition.Add(stateDefinitionValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("variant"u8)) + { + variantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("stateDefinition"u8, out var stateDefinitionProperty)) - { - foreach (var arrayItem in stateDefinitionProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stateDefinitionExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stateDefinitionExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.stateDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the stateDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); } - } - else + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!doActionSeen) + { + logger.LogDebug("the doAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!entryActionSeen) + { + logger.LogDebug("the entryAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!exhibitedStateSeen) + { + logger.LogDebug("the exhibitedState Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!exitActionSeen) + { + logger.LogDebug("the exitAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!stateDefinitionSeen) + { + logger.LogDebug("the stateDefinition Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isParallelSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ExhibitStateUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ExhibitStateUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.ExhibitStateUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isParallel"u8)) { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); + isParallelSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ExhibitStateUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExpressionDeSerializer.cs index ce79138ed..451471fc4 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ExpressionDeSerializer.cs @@ -22,1749 +22,2122 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Expression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Expression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Expression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Expression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Expression") - { - throw new InvalidOperationException($"The ExpressionDeSerializer can only be used to deserialize objects of type IExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Expression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Expression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Expression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Expression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Expression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Expression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the Expression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the owningMembership Json property was not found in the Expression: {Id}", dtoInstance.Id); } - else + if (!owningNamespaceSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the owningNamespace Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Expression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Expression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the Expression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Expression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Expression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Expression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainExpressionDeSerializer.cs index 7ea5d68ae..8e3476685 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainExpressionDeSerializer.cs @@ -22,1847 +22,2239 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureChainExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureChainExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureChainExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureChainExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureChainExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureChainExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureChainExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureChainExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureChainExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureChainExpression") - { - throw new InvalidOperationException($"The FeatureChainExpressionDeSerializer can only be used to deserialize objects of type IFeatureChainExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureChainExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the FeatureChainExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureChainExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the FeatureChainExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureChainExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = membershipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; - } - else + if (reader.ValueTextEquals("isVariable"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedCrossSubsetting = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningType = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the FeatureChainExpression.result property was not found in the Json. The value is set to Guid.Empty"); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - if (targetFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.targetFeature = Guid.Empty; - logger.LogDebug($"the FeatureChainExpression.targetFeature property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (targetFeatureProperty.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.targetFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureChainExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("targetFeature"u8)) + { + targetFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.targetFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FeatureChainExpression.targetFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) + { + dtoInstance.targetFeature = targetFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureChainExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureChainExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureChainExpression cannot be deserialized"); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureChainExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainingDeSerializer.cs index 184e51c15..d78c5deb0 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureChainingDeSerializer.cs @@ -22,728 +22,892 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureChainingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureChaining DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureChainingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureChaining DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureChainingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureChaining(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureChaining dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureChainingDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureChainedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureChaining json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureChaining cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureChainingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureChaining") - { - throw new InvalidOperationException($"The FeatureChainingDeSerializer can only be used to deserialize objects of type IFeatureChaining, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureChaining(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureChaining cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureChaining dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ChainingFeature = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the FeatureChaining.ChainingFeature property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.ChainingFeature = chainingFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - if (chainingFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ChainingFeature = Guid.Empty; - logger.LogDebug($"the FeatureChaining.ChainingFeature property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (chainingFeatureProperty.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ChainingFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureChained"u8, out var featureChainedProperty)) - { - if (featureChainedProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.featureChained = Guid.Empty; - logger.LogDebug($"the FeatureChaining.featureChained property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("featureChained"u8)) { - if (featureChainedProperty.TryGetProperty("@id"u8, out var featureChainedExternalIdProperty)) + featureChainedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureChainedExternalIdProperty.GetString(); + dtoInstance.featureChained = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureChained = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureChaining.featureChained property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureChainedValue)) + { + dtoInstance.featureChained = featureChainedValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureChained Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!featureChainedSeen) + { + logger.LogDebug("the featureChained Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureChaining dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureChaining json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureChaining cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureChaining dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - if (chainingFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("chainingFeature"u8)) { - dtoInstance.ChainingFeature = Guid.Empty; - logger.LogDebug($"the FeatureChaining.ChainingFeature property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (chainingFeatureProperty.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + chainingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + dtoInstance.ChainingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ChainingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureChaining.ChainingFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.ChainingFeature = chainingFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureChaining: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureDeSerializer.cs index 9d44a2e81..1117117c8 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureDeSerializer.cs @@ -22,1688 +22,2055 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeature DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeature DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Feature(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Feature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Feature") - { - throw new InvalidOperationException($"The FeatureDeSerializer can only be used to deserialize objects of type IFeature, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Feature(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Feature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Feature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.multiplicity = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedConjugator = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningNamespace = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (!aliasIdsSeen) { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Feature dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Feature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Feature cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Feature: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureInvertingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureInvertingDeSerializer.cs index 104193145..e20862992 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureInvertingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureInvertingDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureInvertingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureInverting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureInvertingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureInverting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureInvertingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureInverting(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureInverting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureInvertingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureInvertedSeen = false; + var invertingFeatureSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureInverting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureInverting cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureInvertingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureInverting") - { - throw new InvalidOperationException($"The FeatureInvertingDeSerializer can only be used to deserialize objects of type IFeatureInverting, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureInverting(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureInverting cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureInverting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureInverted"u8, out var featureInvertedProperty)) - { - if (featureInvertedProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.FeatureInverted = Guid.Empty; - logger.LogDebug($"the FeatureInverting.FeatureInverted property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("featureInverted"u8)) { - if (featureInvertedProperty.TryGetProperty("@id"u8, out var featureInvertedExternalIdProperty)) + featureInvertedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureInvertedExternalIdProperty.GetString(); + dtoInstance.FeatureInverted = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeatureInverted = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureInverting.FeatureInverted property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureInverted Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureInvertedValue)) + { + dtoInstance.FeatureInverted = featureInvertedValue; + } - if (jsonElement.TryGetProperty("invertingFeature"u8, out var invertingFeatureProperty)) - { - if (invertingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.InvertingFeature = Guid.Empty; - logger.LogDebug($"the FeatureInverting.InvertingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("invertingFeature"u8)) { - if (invertingFeatureProperty.TryGetProperty("@id"u8, out var invertingFeatureExternalIdProperty)) + invertingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = invertingFeatureExternalIdProperty.GetString(); + dtoInstance.InvertingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.InvertingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureInverting.InvertingFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var invertingFeatureValue)) + { + dtoInstance.InvertingFeature = invertingFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the invertingFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeature"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) + { + dtoInstance.owningFeature = owningFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeature = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!featureInvertedSeen) + { + logger.LogDebug("the featureInverted Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!invertingFeatureSeen) + { + logger.LogDebug("the invertingFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureInverting dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var featureInvertedSeen = false; + var invertingFeatureSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureInverting json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureInverting cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureInverting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureInverted"u8, out var featureInvertedProperty)) - { - if (featureInvertedProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.FeatureInverted = Guid.Empty; - logger.LogDebug($"the FeatureInverting.FeatureInverted property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("featureInverted"u8)) { - if (featureInvertedProperty.TryGetProperty("@id"u8, out var featureInvertedExternalIdProperty)) + featureInvertedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureInvertedExternalIdProperty.GetString(); + dtoInstance.FeatureInverted = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeatureInverted = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureInverting.FeatureInverted property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureInverted Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureInvertedValue)) + { + dtoInstance.FeatureInverted = featureInvertedValue; + } - if (jsonElement.TryGetProperty("invertingFeature"u8, out var invertingFeatureProperty)) - { - if (invertingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.InvertingFeature = Guid.Empty; - logger.LogDebug($"the FeatureInverting.InvertingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("invertingFeature"u8)) { - if (invertingFeatureProperty.TryGetProperty("@id"u8, out var invertingFeatureExternalIdProperty)) + invertingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = invertingFeatureExternalIdProperty.GetString(); + dtoInstance.InvertingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.InvertingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureInverting.InvertingFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the invertingFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var invertingFeatureValue)) + { + dtoInstance.InvertingFeature = invertingFeatureValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!featureInvertedSeen) + { + logger.LogDebug("the featureInverted Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!invertingFeatureSeen) + { + logger.LogDebug("the invertingFeature Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureInverting: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureMembershipDeSerializer.cs index 1b0f55356..b8aa5f6db 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.FeatureMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.FeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberFeatureSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureMembership") - { - throw new InvalidOperationException($"The FeatureMembershipDeSerializer can only be used to deserialize objects of type IFeatureMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.FeatureMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.FeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ownedMemberElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberFeature"u8, out var ownedMemberFeatureProperty)) - { - if (ownedMemberFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.ownedMemberFeature = Guid.Empty; - logger.LogDebug($"the FeatureMembership.ownedMemberFeature property was not found in the Json. The value is set to Guid.Empty"); + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberFeature"u8)) { - if (ownedMemberFeatureProperty.TryGetProperty("@id"u8, out var ownedMemberFeatureExternalIdProperty)) + ownedMemberFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedMemberFeatureExternalIdProperty.GetString(); + dtoInstance.ownedMemberFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedMemberFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureMembership.ownedMemberFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberFeatureValue)) + { + dtoInstance.ownedMemberFeature = ownedMemberFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberFeature Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberName"u8)) + { + ownedMemberNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedMemberShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedMemberShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the FeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberFeatureSeen) + { + logger.LogDebug("the ownedMemberFeature Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.FeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureMembership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.FeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FeatureMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureReferenceExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureReferenceExpressionDeSerializer.cs index efdb79a37..757e4bf4f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureReferenceExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureReferenceExpressionDeSerializer.cs @@ -22,1774 +22,2149 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureReferenceExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureReferenceExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureReferenceExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureReferenceExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureReferenceExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureReferenceExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var referentSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureReferenceExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureReferenceExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureReferenceExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureReferenceExpression") - { - throw new InvalidOperationException($"The FeatureReferenceExpressionDeSerializer can only be used to deserialize objects of type IFeatureReferenceExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureReferenceExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the FeatureReferenceExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureReferenceExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referent"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + referentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.referent = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureReferenceExpression.referent property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referentValue)) + { + dtoInstance.referent = referentValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureReferenceExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("referent"u8, out var referentProperty)) - { - if (referentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.referent = Guid.Empty; - logger.LogDebug($"the FeatureReferenceExpression.referent property was not found in the Json. The value is set to Guid.Empty"); - } - else + if (reader.ValueTextEquals("unioningType"u8)) { - if (referentProperty.TryGetProperty("@id"u8, out var referentExternalIdProperty)) - { - var propertyValue = referentExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.referent = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the referent Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!referentSeen) + { + logger.LogDebug("the referent Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the FeatureReferenceExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the shortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); } - else + if (!textualRepresentationSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureReferenceExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the FeatureReferenceExpression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.FeatureReferenceExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureReferenceExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs index c49ae4e4f..edde85491 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureTypingDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureTypingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureTyping DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureTypingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureTyping DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureTypingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureTyping(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureTypingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureTyping json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureTypingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FeatureTyping") - { - throw new InvalidOperationException($"The FeatureTypingDeSerializer can only be used to deserialize objects of type IFeatureTyping, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.FeatureTyping(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningFeature = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeature"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + owningFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) + { + dtoInstance.owningFeature = owningFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.Type = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) + { + dtoInstance.Type = typeValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("typedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (typeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.Type = Guid.Empty; - logger.LogDebug($"the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (typeProperty.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Type = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) - { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } - else + if (!documentationSeen) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) - { - var propertyValue = typedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the documentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, JsonElement jsonElement, ILogger logger) + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.FeatureTyping dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var typeSeen = false; + var typedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureTyping json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FeatureTyping cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - if (typeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.Type = Guid.Empty; - logger.LogDebug($"the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (typeProperty.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typeExternalIdProperty.GetString(); + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("type"u8)) + { + typeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.Type = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Type = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureTyping.Type property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) + { + dtoInstance.Type = typeValue; + } - if (jsonElement.TryGetProperty("typedFeature"u8, out var typedFeatureProperty)) - { - if (typedFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.TypedFeature = Guid.Empty; - logger.LogDebug($"the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("typedFeature"u8)) { - if (typedFeatureProperty.TryGetProperty("@id"u8, out var typedFeatureExternalIdProperty)) + typedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = typedFeatureExternalIdProperty.GetString(); + dtoInstance.TypedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.TypedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureTyping.TypedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typedFeatureValue)) + { + dtoInstance.TypedFeature = typedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + if (!typedFeatureSeen) + { + logger.LogDebug("the typedFeature Json property was not found in the FeatureTyping: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureValueDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureValueDeSerializer.cs index d379a73a8..2fa18c730 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureValueDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FeatureValueDeSerializer.cs @@ -22,826 +22,1044 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.FeatureValues; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FeatureValueDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFeatureValue DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.FeatureValues; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FeatureValueDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFeatureValue DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureValueDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FeatureValueDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FeatureValueDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FeatureValue") - { - throw new InvalidOperationException($"The FeatureValueDeSerializer can only be used to deserialize objects of type IFeatureValue, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FeatureValue cannot be deserialized"); - } - else + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureWithValueSeen = false; + var isDefaultSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isInitialSeen = false; + var isLibraryElementSeen = false; + var membershipOwningNamespaceSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var valueSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the FeatureValue json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FeatureValue cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureWithValue"u8, out var featureWithValueProperty)) - { - if (featureWithValueProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.featureWithValue = Guid.Empty; - logger.LogDebug($"the FeatureValue.featureWithValue property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (featureWithValueProperty.TryGetProperty("@id"u8, out var featureWithValueExternalIdProperty)) - { - var propertyValue = featureWithValueExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.featureWithValue = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureWithValue Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDefault"u8, out var isDefaultProperty)) - { - if (isDefaultProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDefault = isDefaultProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDefault Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("featureWithValue"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + featureWithValueSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.featureWithValue = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the FeatureValue.featureWithValue property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureWithValueValue)) + { + dtoInstance.featureWithValue = featureWithValueValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDefault"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDefaultSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDefault = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isInitial"u8, out var isInitialProperty)) - { - if (isInitialProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsInitial = isInitialProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isInitial Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isInitial"u8)) + { + isInitialSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsInitial = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the FeatureValue.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the FeatureValue.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("value"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + valueSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.value = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the FeatureValue.value property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var valueValue)) + { + dtoInstance.value = valueValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (valueProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.value = Guid.Empty; - logger.LogDebug($"the FeatureValue.value property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (valueProperty.TryGetProperty("@id"u8, out var valueExternalIdProperty)) - { - var propertyValue = valueExternalIdProperty.GetString(); + logger.LogDebug("the declaredName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!featureWithValueSeen) + { + logger.LogDebug("the featureWithValue Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isDefaultSeen) + { + logger.LogDebug("the isDefault Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isInitialSeen) + { + logger.LogDebug("the isInitial Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isDefaultSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isInitialSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FeatureValue json object."); + } - if (propertyValue != null) - { - dtoInstance.value = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FeatureValue cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the value Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.FeatureValues.FeatureValue dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDefault"u8, out var isDefaultProperty)) - { - if (isDefaultProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDefault = isDefaultProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDefault Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDefault"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isDefaultSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDefault = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isInitial"u8, out var isInitialProperty)) - { - if (isInitialProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsInitial = isInitialProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isInitial Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isInitial"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isInitialSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsInitial = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isDefaultSeen) + { + logger.LogDebug("the isDefault Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!isInitialSeen) + { + logger.LogDebug("the isInitial Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FeatureValue: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDeSerializer.cs index 5402cd391..e5afcd349 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Interactions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FlowDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FlowDeSerializer /// /// an instance of /// - internal static IFlow DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFlow DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FlowDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FlowDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Flow") - { - throw new InvalidOperationException($"The FlowDeSerializer can only be used to deserialize objects of type IFlow, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.Flow(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1916 +87,2314 @@ internal static IFlow DeSerialize(JsonElement jsonElement, SerializationModeKind /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var interactionSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var payloadFeatureSeen = false; + var payloadTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var sourceOutputFeatureSeen = false; + var targetFeatureSeen = false; + var targetInputFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Flow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.endOwningType = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("feature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Flow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Flow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("interaction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + interactionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var interactionValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.interaction.Add(interactionValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("interaction"u8, out var interactionProperty)) - { - foreach (var arrayItem in interactionProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var interactionExternalIdProperty)) - { - var propertyValue = interactionExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.interaction.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the interaction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.owningType = owningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("payloadFeature"u8)) { - dtoInstance.owningNamespace = null; + payloadFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadFeatureValue)) + { + dtoInstance.payloadFeature = payloadFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("payloadType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.payloadType.Add(payloadTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("sourceOutputFeature"u8)) { - dtoInstance.owningType = null; + sourceOutputFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceOutputFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceOutputFeatureValue)) + { + dtoInstance.sourceOutputFeature = sourceOutputFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("targetInputFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + targetInputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetInputFeature = null; } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("payloadFeature"u8, out var payloadFeatureProperty)) - { - if (payloadFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadFeature = null; - } - else - { - if (payloadFeatureProperty.TryGetProperty("@id"u8, out var payloadFeatureExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetInputFeatureValue)) { - var propertyValue = payloadFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.payloadFeature = Guid.Parse(propertyValue); - } + dtoInstance.targetInputFeature = targetInputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadType"u8, out var payloadTypeProperty)) - { - foreach (var arrayItem in payloadTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var payloadTypeExternalIdProperty)) - { - var propertyValue = payloadTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.payloadType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the payloadType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!chainingFeatureSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceOutputFeature"u8, out var sourceOutputFeatureProperty)) - { - if (sourceOutputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!connectorEndSeen) { - dtoInstance.sourceOutputFeature = null; + logger.LogDebug("the connectorEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!crossFeatureSeen) { - if (sourceOutputFeatureProperty.TryGetProperty("@id"u8, out var sourceOutputFeatureExternalIdProperty)) - { - var propertyValue = sourceOutputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceOutputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the crossFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceOutputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetInputFeature"u8, out var targetInputFeatureProperty)) - { - if (targetInputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.targetInputFeature = null; + logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); } - else + if (!defaultFeaturingTypeSeen) { - if (targetInputFeatureProperty.TryGetProperty("@id"u8, out var targetInputFeatureExternalIdProperty)) - { - var propertyValue = targetInputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetInputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the defaultFeaturingType Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetInputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!differencingTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the differencingType Json property was not found in the Flow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!interactionSeen) + { + logger.LogDebug("the interaction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!payloadFeatureSeen) + { + logger.LogDebug("the payloadFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!payloadTypeSeen) + { + logger.LogDebug("the payloadType Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!sourceOutputFeatureSeen) + { + logger.LogDebug("the sourceOutputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!targetInputFeatureSeen) + { + logger.LogDebug("the targetInputFeature Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the textualRepresentation Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Flow: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Flow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the Flow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Flow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Flow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Flow: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDefinitionDeSerializer.cs index b31f2d29b..c349ca92c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowDefinitionDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Flows; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FlowDefinitionDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FlowDefinitionDeSerializer /// /// an instance of /// - internal static IFlowDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFlowDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FlowDefinitionDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FlowDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FlowDefinition") - { - throw new InvalidOperationException($"The FlowDefinitionDeSerializer can only be used to deserialize objects of type IFlowDefinition, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Flows.FlowDefinition(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FlowDefinition cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1949 +87,2350 @@ internal static IFlowDefinition DeSerialize(JsonElement jsonElement, Serializati /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) + var actionSeen = false; + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var stepSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FlowDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = actionExternalIdProperty.GetString(); + throw new JsonException("The @id property is not present, the FlowDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("action"u8)) + { + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; - } - else + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + sourceTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) + { + dtoInstance.sourceType = sourceTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) - { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceType = null; + continue; } - else + + if (reader.ValueTextEquals("targetType"u8)) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); + targetTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the sourceType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.targetType.Add(targetTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!actionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the action Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the variantMembership Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FlowDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FlowDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsIndividual = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowDefinition: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowEndDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowEndDeSerializer.cs index f283ab11c..46f6ecb6f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowEndDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowEndDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Interactions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FlowEndDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FlowEndDeSerializer /// /// an instance of /// - internal static IFlowEnd DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFlowEnd DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FlowEndDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FlowEndDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FlowEnd") - { - throw new InvalidOperationException($"The FlowEndDeSerializer can only be used to deserialize objects of type IFlowEnd, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.FlowEnd(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FlowEnd cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1604 +87,1986 @@ internal static IFlowEnd DeSerialize(JsonElement jsonElement, SerializationModeK /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.FlowEnd dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.FlowEnd dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FlowEnd json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FlowEnd cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the FlowEnd.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the FlowEnd.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the type Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.FlowEnd dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.FlowEnd dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FlowEnd json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FlowEnd cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowEnd: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowUsageDeSerializer.cs index 96a13be1f..9eb6c5bd5 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FlowUsageDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Flows; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class FlowUsageDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class FlowUsageDeSerializer /// /// an instance of /// - internal static IFlowUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFlowUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FlowUsageDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FlowUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "FlowUsage") - { - throw new InvalidOperationException($"The FlowUsageDeSerializer can only be used to deserialize objects of type IFlowUsage, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Flows.FlowUsage(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FlowUsage cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,2674 +87,3195 @@ internal static IFlowUsage DeSerialize(JsonElement jsonElement, SerializationMod /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowUsage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var flowDefinitionSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var payloadFeatureSeen = false; + var payloadTypeSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var sourceOutputFeatureSeen = false; + var targetFeatureSeen = false; + var targetInputFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FlowUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the FlowUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the FlowUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the FlowUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowDefinition"u8, out var flowDefinitionProperty)) - { - foreach (var arrayItem in flowDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowDefinitionExternalIdProperty)) - { - var propertyValue = flowDefinitionExternalIdProperty.GetString(); + flowDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowDefinitionValue)) { - dtoInstance.flowDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.flowDefinition.Add(flowDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("multiplicity"u8)) + { + multiplicitySeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.multiplicity = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.nestedAction.Add(nestedActionValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningDefinition = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; - } - else + if (reader.ValueTextEquals("payloadFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadFeature = null; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; - } - else - { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadFeatureValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + dtoInstance.payloadFeature = payloadFeatureValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("payloadType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + payloadTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; - } - else - { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadTypeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.payloadType.Add(payloadTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadFeature"u8, out var payloadFeatureProperty)) - { - if (payloadFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.payloadFeature = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (payloadFeatureProperty.TryGetProperty("@id"u8, out var payloadFeatureExternalIdProperty)) - { - var propertyValue = payloadFeatureExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.payloadFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadType"u8, out var payloadTypeProperty)) - { - foreach (var arrayItem in payloadTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("sourceOutputFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var payloadTypeExternalIdProperty)) - { - var propertyValue = payloadTypeExternalIdProperty.GetString(); + sourceOutputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.payloadType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceOutputFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceOutputFeatureValue)) + { + dtoInstance.sourceOutputFeature = sourceOutputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("targetFeature"u8)) + { + targetFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) - { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceFeature = null; + continue; } - else + + if (reader.ValueTextEquals("targetInputFeature"u8)) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); + targetInputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetInputFeature = null; } - } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceOutputFeature"u8, out var sourceOutputFeatureProperty)) - { - if (sourceOutputFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceOutputFeature = null; - } - else - { - if (sourceOutputFeatureProperty.TryGetProperty("@id"u8, out var sourceOutputFeatureExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetInputFeatureValue)) { - var propertyValue = sourceOutputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceOutputFeature = Guid.Parse(propertyValue); - } + dtoInstance.targetInputFeature = targetInputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the sourceOutputFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("targetInputFeature"u8, out var targetInputFeatureProperty)) - { - if (targetInputFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.targetInputFeature = null; - } - else - { - if (targetInputFeatureProperty.TryGetProperty("@id"u8, out var targetInputFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = targetInputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetInputFeature = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetInputFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the usage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!flowDefinitionSeen) + { + logger.LogDebug("the flowDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!payloadFeatureSeen) + { + logger.LogDebug("the payloadFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!payloadTypeSeen) + { + logger.LogDebug("the payloadType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!sourceOutputFeatureSeen) + { + logger.LogDebug("the sourceOutputFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!targetInputFeatureSeen) + { + logger.LogDebug("the targetInputFeature Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the isAbstract Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.FlowUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + throw new JsonException("Expected a property name in the FlowUsage json object."); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FlowUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsIndividual = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.OwningRelatedElement = null; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isSufficient"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.OwningRelationship = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); + if (reader.ValueTextEquals("owningRelatedElement"u8)) + { + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the portionKind Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the FlowUsage: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForLoopActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForLoopActionUsageDeSerializer.cs index 5eac00052..5d5d71314 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForLoopActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForLoopActionUsageDeSerializer.cs @@ -22,2521 +22,3017 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ForLoopActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IForLoopActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ForLoopActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IForLoopActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ForLoopActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ForLoopActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ForLoopActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ForLoopActionUsage") - { - throw new InvalidOperationException($"The ForLoopActionUsageDeSerializer can only be used to deserialize objects of type IForLoopActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var bodyActionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var loopVariableSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var seqArgumentSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ForLoopActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the ForLoopActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ForLoopActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("bodyAction"u8, out var bodyActionProperty)) - { - if (bodyActionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.bodyAction = Guid.Empty; - logger.LogDebug($"the ForLoopActionUsage.bodyAction property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("bodyAction"u8)) { - if (bodyActionProperty.TryGetProperty("@id"u8, out var bodyActionExternalIdProperty)) + bodyActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = bodyActionExternalIdProperty.GetString(); + dtoInstance.bodyAction = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.bodyAction = Guid.Parse(propertyValue); + logger.LogDebug("the ForLoopActionUsage.bodyAction property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var bodyActionValue)) + { + dtoInstance.bodyAction = bodyActionValue; + } + + continue; } - } - else - { - logger.LogDebug("the bodyAction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ForLoopActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the ForLoopActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("loopVariable"u8, out var loopVariableProperty)) - { - if (loopVariableProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.loopVariable = Guid.Empty; - logger.LogDebug($"the ForLoopActionUsage.loopVariable property was not found in the Json. The value is set to Guid.Empty"); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("loopVariable"u8)) { - if (loopVariableProperty.TryGetProperty("@id"u8, out var loopVariableExternalIdProperty)) + loopVariableSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = loopVariableExternalIdProperty.GetString(); + dtoInstance.loopVariable = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.loopVariable = Guid.Parse(propertyValue); + logger.LogDebug("the ForLoopActionUsage.loopVariable property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var loopVariableValue)) + { + dtoInstance.loopVariable = loopVariableValue; + } + + continue; } - } - else - { - logger.LogDebug("the loopVariable Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeatureMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningNamespace = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("seqArgument"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + seqArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.seqArgument = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the ForLoopActionUsage.seqArgument property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var seqArgumentValue)) + { + dtoInstance.seqArgument = seqArgumentValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("seqArgument"u8, out var seqArgumentProperty)) - { - if (seqArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.seqArgument = Guid.Empty; - logger.LogDebug($"the ForLoopActionUsage.seqArgument property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (seqArgumentProperty.TryGetProperty("@id"u8, out var seqArgumentExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = seqArgumentExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.seqArgument = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the seqArgument Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!actionDefinitionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actionDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!bodyActionSeen) + { + logger.LogDebug("the bodyAction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!loopVariableSeen) + { + logger.LogDebug("the loopVariable Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); } - } - else + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!seqArgumentSeen) + { + logger.LogDebug("the seqArgument Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the usage Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ForLoopActionUsage json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ForLoopActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForLoopActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ForLoopActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForkNodeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForkNodeDeSerializer.cs index b1e92f0ee..ed7a1955c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForkNodeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ForkNodeDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ForkNodeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IForkNode DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ForkNodeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IForkNode DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ForkNodeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ForkNode(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForkNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ForkNodeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ForkNodeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ForkNode") - { - throw new InvalidOperationException($"The ForkNodeDeSerializer can only be used to deserialize objects of type IForkNode, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.ForkNode(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ForkNode cannot be deserialized"); + throw new JsonException("Expected a property name in the ForkNode json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ForkNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForkNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ForkNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ForkNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForkNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.ForkNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ForkNode json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ForkNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ForkNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ForkNode: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs index 79fd57f05..879711f2c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FramedConcernMembershipDeSerializer.cs @@ -22,796 +22,1002 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FramedConcernMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFramedConcernMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FramedConcernMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFramedConcernMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FramedConcernMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FramedConcernMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedConcernSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var referencedConcernSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FramedConcernMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FramedConcernMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "FramedConcernMembership") - { - throw new InvalidOperationException($"The FramedConcernMembershipDeSerializer can only be used to deserialize objects of type IFramedConcernMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - if (ownedConcernProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConcern = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.ownedConcern property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (ownedConcernProperty.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) + ownedConcernSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + dtoInstance.ownedConcern = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedConcern = Guid.Parse(propertyValue); + logger.LogDebug("the FramedConcernMembership.ownedConcern property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) + { + dtoInstance.ownedConcern = ownedConcernValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the FramedConcernMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedConcern"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + referencedConcernSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.referencedConcern = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the FramedConcernMembership.referencedConcern property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedConcernValue)) + { + dtoInstance.referencedConcern = referencedConcernValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); - if (jsonElement.TryGetProperty("referencedConcern"u8, out var referencedConcernProperty)) + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (referencedConcernProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.referencedConcern = Guid.Empty; - logger.LogDebug($"the FramedConcernMembership.referencedConcern property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (referencedConcernProperty.TryGetProperty("@id"u8, out var referencedConcernExternalIdProperty)) - { - var propertyValue = referencedConcernExternalIdProperty.GetString(); + logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!referencedConcernSeen) + { + logger.LogDebug("the referencedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the FramedConcernMembership json object."); + } - if (propertyValue != null) - { - dtoInstance.referencedConcern = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the FramedConcernMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the referencedConcern Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.FramedConcernMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + ownedRelatedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the FramedConcernMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FunctionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FunctionDeSerializer.cs index 31237e24c..7213a723f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FunctionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/FunctionDeSerializer.cs @@ -22,1226 +22,1485 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class FunctionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IFunction DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class FunctionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IFunction DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FunctionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Function(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Function dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("FunctionDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Function json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Function cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the FunctionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Function") - { - throw new InvalidOperationException($"The FunctionDeSerializer can only be used to deserialize objects of type IFunction, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Function(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Function cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Function dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Function: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Function: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Function: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Function.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Function: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the Function.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.step.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Function: {Id}", dtoInstance.Id); } - } - else + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Function: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Function dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the step Json property was not found in the Function: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Function json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Function cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Function: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Function dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Function: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Function: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Function: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IfActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IfActionUsageDeSerializer.cs index 40cc3a2f5..779338adf 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IfActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IfActionUsageDeSerializer.cs @@ -22,2520 +22,3012 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class IfActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IIfActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class IfActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IIfActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IfActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IfActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the IfActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "IfActionUsage") - { - throw new InvalidOperationException($"The IfActionUsageDeSerializer can only be used to deserialize objects of type IIfActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var elseActionSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var ifArgumentSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var thenActionSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the IfActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the IfActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the IfActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elseAction"u8, out var elseActionProperty)) - { - if (elseActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.elseAction = null; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (elseActionProperty.TryGetProperty("@id"u8, out var elseActionExternalIdProperty)) - { - var propertyValue = elseActionExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.elseAction = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the elseAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elseAction"u8)) { - dtoInstance.endOwningType = null; + elseActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.elseAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var elseActionValue)) + { + dtoInstance.elseAction = elseActionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the IfActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the IfActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ifArgument"u8, out var ifArgumentProperty)) - { - if (ifArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ifArgument = Guid.Empty; - logger.LogDebug($"the IfActionUsage.ifArgument property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ifArgument"u8)) { - if (ifArgumentProperty.TryGetProperty("@id"u8, out var ifArgumentExternalIdProperty)) + ifArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ifArgumentExternalIdProperty.GetString(); + dtoInstance.ifArgument = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ifArgument = Guid.Parse(propertyValue); + logger.LogDebug("the IfActionUsage.ifArgument property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ifArgumentValue)) + { + dtoInstance.ifArgument = ifArgumentValue; + } + + continue; } - } - else - { - logger.LogDebug("the ifArgument Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedView"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("thenAction"u8, out var thenActionProperty)) - { - if (thenActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.thenAction = Guid.Empty; - logger.LogDebug($"the IfActionUsage.thenAction property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (thenActionProperty.TryGetProperty("@id"u8, out var thenActionExternalIdProperty)) - { - var propertyValue = thenActionExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.thenAction = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the thenAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("thenAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + thenActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + dtoInstance.thenAction = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the IfActionUsage.thenAction property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var thenActionValue)) + { + dtoInstance.thenAction = thenActionValue; + } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) + { + dtoInstance.variant.Add(variantValue); + } + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("variantMembership"u8)) + { + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!elseActionSeen) + { + logger.LogDebug("the elseAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ifArgumentSeen) + { + logger.LogDebug("the ifArgument Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!thenActionSeen) + { + logger.LogDebug("the thenAction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.IfActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the IfActionUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the IfActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the IfActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IncludeUseCaseUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IncludeUseCaseUsageDeSerializer.cs index a900b8948..bc1299477 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IncludeUseCaseUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IncludeUseCaseUsageDeSerializer.cs @@ -22,2601 +22,3102 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.UseCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class IncludeUseCaseUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IIncludeUseCaseUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.UseCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class IncludeUseCaseUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IIncludeUseCaseUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IncludeUseCaseUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IncludeUseCaseUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the IncludeUseCaseUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "IncludeUseCaseUsage") - { - throw new InvalidOperationException($"The IncludeUseCaseUsageDeSerializer can only be used to deserialize objects of type IIncludeUseCaseUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var includedUseCaseSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var useCaseDefinitionSeen = false; + var useCaseIncludedSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the IncludeUseCaseUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the IncludeUseCaseUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the IncludeUseCaseUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the IncludeUseCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the IncludeUseCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("includedUseCase"u8, out var includedUseCaseProperty)) - { - foreach (var arrayItem in includedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var includedUseCaseExternalIdProperty)) - { - var propertyValue = includedUseCaseExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.includedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } - } - } - else - { - logger.LogDebug("the includedUseCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("includedUseCase"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + includedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var includedUseCaseValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.includedUseCase.Add(includedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - dtoInstance.objectiveRequirement = null; + objectiveRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - dtoInstance.ownedCrossSubsetting = null; - } - else - { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the IncludeUseCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the IncludeUseCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("useCaseDefinition"u8)) + { + useCaseDefinitionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.useCaseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var useCaseDefinitionValue)) + { + dtoInstance.useCaseDefinition = useCaseDefinitionValue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the IncludeUseCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("useCaseIncluded"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + useCaseIncludedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.useCaseIncluded = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the IncludeUseCaseUsage.useCaseIncluded property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var useCaseIncludedValue)) + { + dtoInstance.useCaseIncluded = useCaseIncludedValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("variant"u8)) { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the IncludeUseCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("useCaseDefinition"u8, out var useCaseDefinitionProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (useCaseDefinitionProperty.ValueKind == JsonValueKind.Null) + if (!actorParameterSeen) { - dtoInstance.useCaseDefinition = null; + logger.LogDebug("the actorParameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); } - else + if (!aliasIdsSeen) { - if (useCaseDefinitionProperty.TryGetProperty("@id"u8, out var useCaseDefinitionExternalIdProperty)) - { - var propertyValue = useCaseDefinitionExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.useCaseDefinition = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the aliasIds Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the useCaseDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("useCaseIncluded"u8, out var useCaseIncludedProperty)) - { - if (useCaseIncludedProperty.ValueKind == JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.useCaseIncluded = Guid.Empty; - logger.LogDebug($"the IncludeUseCaseUsage.useCaseIncluded property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the chainingFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); } - else + if (!crossFeatureSeen) { - if (useCaseIncludedProperty.TryGetProperty("@id"u8, out var useCaseIncludedExternalIdProperty)) - { - var propertyValue = useCaseIncludedExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.useCaseIncluded = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the crossFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!includedUseCaseSeen) + { + logger.LogDebug("the includedUseCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); } - } - else + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!useCaseDefinitionSeen) + { + logger.LogDebug("the useCaseDefinition Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!useCaseIncludedSeen) + { + logger.LogDebug("the useCaseIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the useCaseIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the IncludeUseCaseUsage json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the IncludeUseCaseUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.IncludeUseCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the IncludeUseCaseUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IndexExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IndexExpressionDeSerializer.cs index 191c3b9b4..fdadf0af7 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IndexExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IndexExpressionDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Expressions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class IndexExpressionDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class IndexExpressionDeSerializer /// /// an instance of /// - internal static IIndexExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IIndexExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IndexExpressionDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the IndexExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "IndexExpression") - { - throw new InvalidOperationException($"The IndexExpressionDeSerializer can only be used to deserialize objects of type IIndexExpression, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.IndexExpression(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the IndexExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1738 +87,2143 @@ internal static IIndexExpression DeSerialize(JsonElement jsonElement, Serializat /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.IndexExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.IndexExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the IndexExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the IndexExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = argumentExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.argument.Add(argumentValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the IndexExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the IndexExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inputExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the IndexExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the IndexExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) - { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + dtoInstance.name = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("operator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the IndexExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the IndexExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); } - else + if (!argumentSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the argument Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the result Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (!crossFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the crossFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the type Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.IndexExpression dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.IndexExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the IndexExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the IndexExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the IndexExpression: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InteractionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InteractionDeSerializer.cs index 0dea967ff..ab7554850 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InteractionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InteractionDeSerializer.cs @@ -22,1345 +22,1611 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Interactions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class InteractionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IInteraction DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Interactions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class InteractionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IInteraction DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InteractionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.Interaction(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Interaction dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InteractionDeSerializer"); + var aliasIdsSeen = false; + var associationEndSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var stepSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Interaction json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Interaction cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the InteractionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Interaction") - { - throw new InvalidOperationException($"The InteractionDeSerializer can only be used to deserialize objects of type IInteraction, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.Interaction(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Interaction cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Interaction dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("associationEnd"u8)) { - var propertyValue = arrayItem.GetString(); + associationEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationEndValue)) + { + dtoInstance.associationEnd.Add(associationEndValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("associationEnd"u8, out var associationEndProperty)) - { - foreach (var arrayItem in associationEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationEndExternalIdProperty)) - { - var propertyValue = associationEndExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.associationEnd.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the associationEnd Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceType = sourceTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("step"u8)) + { + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("targetType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + targetTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.targetType.Add(targetTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceType = null; + logger.LogDebug("the aliasIds Json property was not found in the Interaction: {Id}", dtoInstance.Id); } - else + if (!associationEndSeen) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the associationEnd Json property was not found in the Interaction: {Id}", dtoInstance.Id); } - } - else + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Interaction dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the sourceType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Interaction json object."); + } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.step.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Interaction cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = targetTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.Interaction dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); - if (propertyValue != null) + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Interaction: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceDefinitionDeSerializer.cs index b417df7fd..039cc8fe4 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceDefinitionDeSerializer.cs @@ -22,1993 +22,2373 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Interfaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class InterfaceDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IInterfaceDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Interfaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class InterfaceDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IInterfaceDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InterfaceDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InterfaceDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var interfaceEndSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedTypeSeen = false; + var shortNameSeen = false; + var sourceTypeSeen = false; + var targetTypeSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the InterfaceDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the InterfaceDefinition json object."); + } - if (@type.GetString() != "InterfaceDefinition") - { - throw new InvalidOperationException($"The InterfaceDefinitionDeSerializer can only be used to deserialize objects of type IInterfaceDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the InterfaceDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the InterfaceDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("interfaceEnd"u8, out var interfaceEndProperty)) - { - foreach (var arrayItem in interfaceEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("interfaceEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var interfaceEndExternalIdProperty)) - { - var propertyValue = interfaceEndExternalIdProperty.GetString(); + interfaceEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var interfaceEndValue)) { - dtoInstance.interfaceEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.interfaceEnd.Add(interfaceEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the interfaceEnd Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedType.Add(relatedTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; - } - else - { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("sourceType"u8)) { - dtoInstance.OwningRelationship = null; + sourceTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceTypeValue)) + { + dtoInstance.sourceType = sourceTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("targetType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + targetTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.targetType.Add(targetTypeValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedType"u8, out var relatedTypeProperty)) - { - foreach (var arrayItem in relatedTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedTypeExternalIdProperty)) - { - var propertyValue = relatedTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the relatedType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceType"u8, out var sourceTypeProperty)) - { - if (sourceTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceType = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (sourceTypeProperty.TryGetProperty("@id"u8, out var sourceTypeExternalIdProperty)) - { - var propertyValue = sourceTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.sourceType = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the sourceType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetType"u8, out var targetTypeProperty)) - { - foreach (var arrayItem in targetTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetTypeExternalIdProperty)) - { - var propertyValue = targetTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.targetType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!interfaceEndSeen) + { + logger.LogDebug("the interfaceEnd Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); } - } - else + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!relatedTypeSeen) + { + logger.LogDebug("the relatedType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!sourceTypeSeen) + { + logger.LogDebug("the sourceType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!targetTypeSeen) + { + logger.LogDebug("the targetType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the usage Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the InterfaceDefinition json object."); + } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the InterfaceDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InterfaceDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceUsageDeSerializer.cs index ef67d33b6..9ccf19119 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InterfaceUsageDeSerializer.cs @@ -22,2706 +22,3221 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Interfaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class InterfaceUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IInterfaceUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Interfaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class InterfaceUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IInterfaceUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InterfaceUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InterfaceUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the InterfaceUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "InterfaceUsage") - { - throw new InvalidOperationException($"The InterfaceUsageDeSerializer can only be used to deserialize objects of type IInterfaceUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var interfaceDefinitionSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var partDefinitionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the InterfaceUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the InterfaceUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the InterfaceUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + defaultFeaturingTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) + { + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the InterfaceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the InterfaceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("interfaceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + interfaceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var interfaceDefinitionValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.interfaceDefinition.Add(interfaceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("interfaceDefinition"u8, out var interfaceDefinitionProperty)) - { - foreach (var arrayItem in interfaceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var interfaceDefinitionExternalIdProperty)) - { - var propertyValue = interfaceDefinitionExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.interfaceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the interfaceDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) - { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelatedElement = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningType = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("partDefinition"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + partDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var partDefinitionValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.partDefinition.Add(partDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("partDefinition"u8, out var partDefinitionProperty)) - { - foreach (var arrayItem in partDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var partDefinitionExternalIdProperty)) - { - var propertyValue = partDefinitionExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.partDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the partDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) - { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceFeature = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!interfaceDefinitionSeen) + { + logger.LogDebug("the interfaceDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!partDefinitionSeen) + { + logger.LogDebug("the partDefinition Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Interfaces.InterfaceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the InterfaceUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the InterfaceUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the InterfaceUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IntersectingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IntersectingDeSerializer.cs index ade1ef2dc..fff8b40e7 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IntersectingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/IntersectingDeSerializer.cs @@ -22,728 +22,892 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class IntersectingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IIntersecting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class IntersectingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IIntersecting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IntersectingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Intersecting(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Intersecting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("IntersectingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var intersectingTypeSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeIntersectedSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Intersecting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Intersecting cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the IntersectingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Intersecting") - { - throw new InvalidOperationException($"The IntersectingDeSerializer can only be used to deserialize objects of type IIntersecting, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Intersecting(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Intersecting cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Intersecting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - if (intersectingTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IntersectingType = Guid.Empty; - logger.LogDebug($"the Intersecting.IntersectingType property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (intersectingTypeProperty.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) + intersectingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + dtoInstance.IntersectingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.IntersectingType = Guid.Parse(propertyValue); + logger.LogDebug("the Intersecting.IntersectingType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) + { + dtoInstance.IntersectingType = intersectingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("typeIntersected"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typeIntersectedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.typeIntersected = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Intersecting.typeIntersected property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeIntersectedValue)) + { + dtoInstance.typeIntersected = typeIntersectedValue; + } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Intersecting: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("typeIntersected"u8, out var typeIntersectedProperty)) + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!typeIntersectedSeen) + { + logger.LogDebug("the typeIntersected Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Intersecting dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var intersectingTypeSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (typeIntersectedProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.typeIntersected = Guid.Empty; - logger.LogDebug($"the Intersecting.typeIntersected property was not found in the Json. The value is set to Guid.Empty"); + throw new JsonException("Expected a property name in the Intersecting json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - if (typeIntersectedProperty.TryGetProperty("@id"u8, out var typeIntersectedExternalIdProperty)) - { - var propertyValue = typeIntersectedExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.typeIntersected = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Intersecting cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the typeIntersected Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Intersecting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - if (intersectingTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IntersectingType = Guid.Empty; - logger.LogDebug($"the Intersecting.IntersectingType property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (intersectingTypeProperty.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) + intersectingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + dtoInstance.IntersectingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.IntersectingType = Guid.Parse(propertyValue); + logger.LogDebug("the Intersecting.IntersectingType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) + { + dtoInstance.IntersectingType = intersectingTypeValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Intersecting: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvariantDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvariantDeSerializer.cs index 36119f4ed..6e097b14e 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvariantDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvariantDeSerializer.cs @@ -22,1773 +22,2158 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class InvariantDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IInvariant DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class InvariantDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IInvariant DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InvariantDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Invariant(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Invariant dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InvariantDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var predicateSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Invariant json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Invariant cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the InvariantDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Invariant") - { - throw new InvalidOperationException($"The InvariantDeSerializer can only be used to deserialize objects of type IInvariant, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Invariant(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Invariant cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Invariant dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Invariant.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Invariant.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) + { + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("predicate"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + predicateSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.predicate = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var predicateValue)) + { + dtoInstance.predicate = predicateValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the Invariant.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("predicate"u8, out var predicateProperty)) - { - if (predicateProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("unioningType"u8)) { - dtoInstance.predicate = null; - } - else - { - if (predicateProperty.TryGetProperty("@id"u8, out var predicateExternalIdProperty)) - { - var propertyValue = predicateExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.predicate = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the predicate Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!predicateSeen) + { + logger.LogDebug("the predicate Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!typeSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the Invariant.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the type Json property was not found in the Invariant: {Id}", dtoInstance.Id); } - else + if (!unioningTypeSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the unioningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Invariant dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Invariant json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the Invariant cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Invariant dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Invariant: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvocationExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvocationExpressionDeSerializer.cs index 8108b3ad0..720bfad28 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvocationExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/InvocationExpressionDeSerializer.cs @@ -22,1794 +22,2172 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class InvocationExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IInvocationExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class InvocationExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IInvocationExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InvocationExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("InvocationExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the InvocationExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the InvocationExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the InvocationExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "InvocationExpression") - { - throw new InvalidOperationException($"The InvocationExpressionDeSerializer can only be used to deserialize objects of type IInvocationExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the InvocationExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the InvocationExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the InvocationExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the InvocationExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + logger.LogDebug("the InvocationExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = membershipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.multiplicity = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedConjugator = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningNamespace = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningType = owningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the InvocationExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) { - var propertyValue = parameterExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + dtoInstance.result = resultValue; } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the InvocationExpression.result property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + logger.LogDebug("the owner Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the InvocationExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the InvocationExpression cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.InvocationExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the InvocationExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemDefinitionDeSerializer.cs index 749b004b1..453d77417 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemDefinitionDeSerializer.cs @@ -22,1817 +22,2179 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Items; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ItemDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IItemDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Items; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ItemDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IItemDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ItemDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Items.ItemDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ItemDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the ItemDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ItemDefinition json object."); + } - if (@type.GetString() != "ItemDefinition") - { - throw new InvalidOperationException($"The ItemDefinitionDeSerializer can only be used to deserialize objects of type IItemDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Items.ItemDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ItemDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the ItemDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ItemDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ItemDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ItemDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemUsageDeSerializer.cs index b761b89aa..5fba3855d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ItemUsageDeSerializer.cs @@ -22,2466 +22,2959 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Items; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ItemUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IItemUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Items; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ItemUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IItemUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ItemUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Items.ItemUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ItemUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ItemUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ItemUsage") - { - throw new InvalidOperationException($"The ItemUsageDeSerializer can only be used to deserialize objects of type IItemUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Items.ItemUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ItemUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ItemUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ItemUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ItemUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ItemUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + isVariationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningType = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the declaredShortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Items.ItemUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the direction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ItemUsage json object."); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ItemUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ItemUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/JoinNodeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/JoinNodeDeSerializer.cs index 30ebfc2ea..d4eae511f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/JoinNodeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/JoinNodeDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class JoinNodeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IJoinNode DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class JoinNodeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IJoinNode DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("JoinNodeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.JoinNode(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.JoinNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("JoinNodeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the JoinNodeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "JoinNode") - { - throw new InvalidOperationException($"The JoinNodeDeSerializer can only be used to deserialize objects of type IJoinNode, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.JoinNode(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the JoinNode cannot be deserialized"); + throw new JsonException("Expected a property name in the JoinNode json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the JoinNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.JoinNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the JoinNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the JoinNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.JoinNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.JoinNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the JoinNode json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the JoinNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the JoinNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the JoinNode: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LibraryPackageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LibraryPackageDeSerializer.cs index d70f5dc13..26f5ba621 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LibraryPackageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LibraryPackageDeSerializer.cs @@ -22,685 +22,859 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Packages; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LibraryPackageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILibraryPackage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Packages; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LibraryPackageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILibraryPackage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LibraryPackageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LibraryPackageDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var filterConditionSeen = false; + var importedMembershipSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isStandardSeen = false; + var memberSeen = false; + var membershipSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedImportSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LibraryPackage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LibraryPackage cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LibraryPackageDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LibraryPackage") - { - throw new InvalidOperationException($"The LibraryPackageDeSerializer can only be used to deserialize objects of type ILibraryPackage, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LibraryPackage cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("filterCondition"u8, out var filterConditionProperty)) - { - foreach (var arrayItem in filterConditionProperty.EnumerateArray()) + if (reader.ValueTextEquals("filterCondition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var filterConditionExternalIdProperty)) - { - var propertyValue = filterConditionExternalIdProperty.GetString(); + filterConditionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var filterConditionValue)) { - dtoInstance.filterCondition.Add(Guid.Parse(propertyValue)); + dtoInstance.filterCondition.Add(filterConditionValue); } } + + continue; } - } - else - { - logger.LogDebug("the filterCondition Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isStandard"u8, out var isStandardProperty)) - { - if (isStandardProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isStandard"u8)) { - dtoInstance.IsStandard = isStandardProperty.GetBoolean(); + isStandardSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsStandard = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isStandard Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!filterConditionSeen) + { + logger.LogDebug("the filterCondition Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!isStandardSeen) + { + logger.LogDebug("the isStandard Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); } - } - else + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isStandardSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the owningRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LibraryPackage json object."); + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LibraryPackage cannot be deserialized"); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.LibraryPackage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isStandard"u8, out var isStandardProperty)) - { - if (isStandardProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isStandard"u8)) { - dtoInstance.IsStandard = isStandardProperty.GetBoolean(); + isStandardSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsStandard = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isStandard Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!isStandardSeen) + { + logger.LogDebug("the isStandard Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LibraryPackage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralBooleanDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralBooleanDeSerializer.cs index 7bcb81bc0..1d4a31cf0 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralBooleanDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralBooleanDeSerializer.cs @@ -22,1773 +22,2158 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralBooleanDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralBoolean DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralBooleanDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralBoolean DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralBooleanDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralBooleanDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralBoolean json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralBoolean cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralBooleanDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralBoolean") - { - throw new InvalidOperationException($"The LiteralBooleanDeSerializer can only be used to deserialize objects of type ILiteralBoolean, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralBoolean cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralBoolean.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralBoolean.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralBoolean.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralBoolean.result property was not found in the Json. The value is set to Guid.Empty"); - } - else + if (reader.ValueTextEquals("value"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.Value = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralBoolean json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the LiteralBoolean cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = typeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - if (valueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.Value = valueProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralBoolean dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - if (valueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("value"u8)) { - dtoInstance.Value = valueProperty.GetBoolean(); + valueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.Value = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralBoolean: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralExpressionDeSerializer.cs index 07be19eb8..d27c7cafb 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralExpressionDeSerializer.cs @@ -22,1749 +22,2122 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralExpression") - { - throw new InvalidOperationException($"The LiteralExpressionDeSerializer can only be used to deserialize objects of type ILiteralExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the owningMembership Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); } - else + if (!owningNamespaceSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the owningNamespace Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the LiteralExpression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralInfinityDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralInfinityDeSerializer.cs index 68d48385d..717102e1d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralInfinityDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralInfinityDeSerializer.cs @@ -22,1749 +22,2122 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralInfinityDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralInfinity DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralInfinityDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralInfinity DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralInfinityDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralInfinityDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInfinity json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralInfinity cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralInfinityDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralInfinity") - { - throw new InvalidOperationException($"The LiteralInfinityDeSerializer can only be used to deserialize objects of type ILiteralInfinity, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralInfinity cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralInfinity.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInfinity.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInfinity.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralInfinity.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the owningMembership Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); } - else + if (!owningNamespaceSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the owningNamespace Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInfinity json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the LiteralInfinity cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInfinity dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInfinity: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs index 22ab8827a..9cbf59511 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralIntegerDeSerializer.cs @@ -22,1767 +22,2152 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralIntegerDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralInteger DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralIntegerDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralInteger DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralIntegerDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralIntegerDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInteger json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralIntegerDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralInteger") - { - throw new InvalidOperationException($"The LiteralIntegerDeSerializer can only be used to deserialize objects of type ILiteralInteger, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralInteger.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInteger.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralInteger.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("value"u8)) + { + valueSeen = true; + reader.Read(); + + dtoInstance.Value = reader.GetInt32(); + + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralInteger.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the ownedMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); } - else + if (!ownedRedefinitionSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralInteger json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the LiteralInteger cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetInt32(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralInteger dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetInt32(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("value"u8)) + { + valueSeen = true; + reader.Read(); - } - } -} + dtoInstance.Value = reader.GetInt32(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralInteger: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs index 5cf526652..923cfe5cf 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralRationalDeSerializer.cs @@ -22,1767 +22,2152 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralRationalDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralRational DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralRationalDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralRational DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralRationalDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralRationalDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralRational json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralRationalDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralRational") - { - throw new InvalidOperationException($"The LiteralRationalDeSerializer can only be used to deserialize objects of type ILiteralRational, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralRational.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralRational.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralRational.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("value"u8)) + { + valueSeen = true; + reader.Read(); + + dtoInstance.Value = reader.GetDouble(); + + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralRational.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the ownedMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); } - else + if (!ownedRedefinitionSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralRational json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the LiteralRational cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetDouble(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralRational dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - dtoInstance.Value = valueProperty.GetDouble(); - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("value"u8)) + { + valueSeen = true; + reader.Read(); - } - } -} + dtoInstance.Value = reader.GetDouble(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralRational: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralStringDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralStringDeSerializer.cs index b40de8aaf..9f2cb22e3 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralStringDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/LiteralStringDeSerializer.cs @@ -22,1777 +22,2162 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class LiteralStringDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ILiteralString DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class LiteralStringDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ILiteralString DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralStringDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("LiteralStringDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralString json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the LiteralString cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the LiteralStringDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "LiteralString") - { - throw new InvalidOperationException($"The LiteralStringDeSerializer can only be used to deserialize objects of type ILiteralString, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the LiteralString cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the LiteralString.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralString.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the LiteralString.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("value"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the LiteralString.result property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + valueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + var valueValue = reader.GetString(); + + if (valueValue != null) + { + dtoInstance.Value = valueValue; } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + logger.LogDebug("the unioningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var valueSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the LiteralString json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the LiteralString cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = typeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - var propertyValue = valueProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.Value = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.LiteralString dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("value"u8, out var valueProperty)) - { - var propertyValue = valueProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("value"u8)) { - dtoInstance.Value = propertyValue; + valueSeen = true; + reader.Read(); + + var valueValue = reader.GetString(); + + if (valueValue != null) + { + dtoInstance.Value = valueValue; + } + + continue; } - } - else - { - logger.LogDebug("the value Json property was not found in the LiteralString: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + if (!valueSeen) + { + logger.LogDebug("the value Json property was not found in the LiteralString: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipDeSerializer.cs index 5c70427ae..88ea64f24 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipDeSerializer.cs @@ -22,796 +22,1002 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Namespaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Namespaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.Membership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var memberElementSeen = false; + var memberElementIdSeen = false; + var memberNameSeen = false; + var membershipOwningNamespaceSeen = false; + var memberShortNameSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Membership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Membership") - { - throw new InvalidOperationException($"The MembershipDeSerializer can only be used to deserialize objects of type IMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.Membership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberElement"u8, out var memberElementProperty)) - { - if (memberElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.MemberElement = Guid.Empty; - logger.LogDebug($"the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("memberElement"u8)) { - if (memberElementProperty.TryGetProperty("@id"u8, out var memberElementExternalIdProperty)) + memberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = memberElementExternalIdProperty.GetString(); + dtoInstance.MemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.MemberElement = Guid.Parse(propertyValue); + logger.LogDebug("the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberElementValue)) + { + dtoInstance.MemberElement = memberElementValue; + } - if (jsonElement.TryGetProperty("memberElementId"u8, out var memberElementIdProperty)) - { - var propertyValue = memberElementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("memberElementId"u8)) { - dtoInstance.memberElementId = propertyValue; - } - } - else - { - logger.LogDebug("the memberElementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + memberElementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("memberName"u8, out var memberNameProperty)) - { - dtoInstance.MemberName = memberNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + var memberElementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (memberElementIdValue != null) + { + dtoInstance.memberElementId = memberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("memberName"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the Membership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + memberNameSeen = true; + reader.Read(); + + dtoInstance.MemberName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Membership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberShortName"u8, out var memberShortNameProperty)) - { - dtoInstance.MemberShortName = memberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("memberShortName"u8)) + { + memberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + dtoInstance.MemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementSeen) + { + logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementIdSeen) + { + logger.LogDebug("the memberElementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberNameSeen) + { + logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberShortNameSeen) + { + logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var memberElementSeen = false; + var memberNameSeen = false; + var memberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Membership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Membership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Membership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberElement"u8, out var memberElementProperty)) - { - if (memberElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.MemberElement = Guid.Empty; - logger.LogDebug($"the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("memberElement"u8)) { - if (memberElementProperty.TryGetProperty("@id"u8, out var memberElementExternalIdProperty)) + memberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = memberElementExternalIdProperty.GetString(); + dtoInstance.MemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.MemberElement = Guid.Parse(propertyValue); + logger.LogDebug("the Membership.MemberElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberElementValue)) + { + dtoInstance.MemberElement = memberElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("memberName"u8, out var memberNameProperty)) - { - dtoInstance.MemberName = memberNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("memberName"u8)) + { + memberNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("memberShortName"u8, out var memberShortNameProperty)) - { - dtoInstance.MemberShortName = memberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + dtoInstance.MemberName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("memberShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + memberShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.MemberShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberElementSeen) + { + logger.LogDebug("the memberElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberNameSeen) + { + logger.LogDebug("the memberName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!memberShortNameSeen) + { + logger.LogDebug("the memberShortName Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the Membership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipExposeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipExposeDeSerializer.cs index c1984b339..a82b59a99 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipExposeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipExposeDeSerializer.cs @@ -22,819 +22,1021 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MembershipExposeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMembershipExpose DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MembershipExposeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMembershipExpose DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipExposeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.MembershipExpose(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.MembershipExpose dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipExposeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MembershipExposeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "MembershipExpose") - { - throw new InvalidOperationException($"The MembershipExposeDeSerializer can only be used to deserialize objects of type IMembershipExpose, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.MembershipExpose(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MembershipExpose cannot be deserialized"); - } - else + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var importedElementSeen = false; + var importedMembershipSeen = false; + var importOwningNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isLibraryElementSeen = false; + var isRecursiveSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the MembershipExpose json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.MembershipExpose dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the MembershipExpose cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedElement"u8, out var importedElementProperty)) - { - if (importedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.importedElement = Guid.Empty; - logger.LogDebug($"the MembershipExpose.importedElement property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (importedElementProperty.TryGetProperty("@id"u8, out var importedElementExternalIdProperty)) - { - var propertyValue = importedElementExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.importedElement = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - if (importedMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedMembership = Guid.Empty; - logger.LogDebug($"the MembershipExpose.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedElement"u8)) { - if (importedMembershipProperty.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) + importedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + dtoInstance.importedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedMembership = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipExpose.importedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedElementValue)) + { + dtoInstance.importedElement = importedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importOwningNamespace"u8, out var importOwningNamespaceProperty)) - { - if (importOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("importedMembership"u8)) { - dtoInstance.importOwningNamespace = Guid.Empty; - logger.LogDebug($"the MembershipExpose.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + importedMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ImportedMembership = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the MembershipExpose.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) + { + dtoInstance.ImportedMembership = importedMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importOwningNamespace"u8)) { - if (importOwningNamespaceProperty.TryGetProperty("@id"u8, out var importOwningNamespaceExternalIdProperty)) + importOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.importOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.importOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipExpose.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importOwningNamespaceValue)) + { + dtoInstance.importOwningNamespace = importOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the importOwningNamespace Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isRecursive"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isRecursiveSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!importedElementSeen) + { + logger.LogDebug("the importedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!importOwningNamespaceSeen) + { + logger.LogDebug("the importOwningNamespace Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.MembershipExpose dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var importedMembershipSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isRecursiveSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MembershipExpose json object."); + } - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MembershipExpose cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.MembershipExpose dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - if (importedMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedMembership = Guid.Empty; - logger.LogDebug($"the MembershipExpose.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (importedMembershipProperty.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) + importedMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + dtoInstance.ImportedMembership = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedMembership = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipExpose.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) + { + dtoInstance.ImportedMembership = importedMembershipValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isRecursive"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isRecursiveSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the MembershipExpose: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipImportDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipImportDeSerializer.cs index df58c5646..b6ffe101e 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipImportDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MembershipImportDeSerializer.cs @@ -22,819 +22,1021 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Namespaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MembershipImportDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMembershipImport DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Namespaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MembershipImportDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMembershipImport DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipImportDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MembershipImportDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MembershipImportDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "MembershipImport") - { - throw new InvalidOperationException($"The MembershipImportDeSerializer can only be used to deserialize objects of type IMembershipImport, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MembershipImport cannot be deserialized"); - } - else + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var importedElementSeen = false; + var importedMembershipSeen = false; + var importOwningNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isLibraryElementSeen = false; + var isRecursiveSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the MembershipImport json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the MembershipImport cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedElement"u8, out var importedElementProperty)) - { - if (importedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.importedElement = Guid.Empty; - logger.LogDebug($"the MembershipImport.importedElement property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (importedElementProperty.TryGetProperty("@id"u8, out var importedElementExternalIdProperty)) - { - var propertyValue = importedElementExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.importedElement = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - if (importedMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedMembership = Guid.Empty; - logger.LogDebug($"the MembershipImport.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedElement"u8)) { - if (importedMembershipProperty.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) + importedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + dtoInstance.importedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedMembership = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipImport.importedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedElementValue)) + { + dtoInstance.importedElement = importedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importOwningNamespace"u8, out var importOwningNamespaceProperty)) - { - if (importOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("importedMembership"u8)) { - dtoInstance.importOwningNamespace = Guid.Empty; - logger.LogDebug($"the MembershipImport.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + importedMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ImportedMembership = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the MembershipImport.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) + { + dtoInstance.ImportedMembership = importedMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importOwningNamespace"u8)) { - if (importOwningNamespaceProperty.TryGetProperty("@id"u8, out var importOwningNamespaceExternalIdProperty)) + importOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.importOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.importOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipImport.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importOwningNamespaceValue)) + { + dtoInstance.importOwningNamespace = importOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the importOwningNamespace Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isRecursive"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isRecursiveSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!importedElementSeen) + { + logger.LogDebug("the importedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!importOwningNamespaceSeen) + { + logger.LogDebug("the importOwningNamespace Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var importedMembershipSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isRecursiveSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MembershipImport json object."); + } - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MembershipImport cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.MembershipImport dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - if (importedMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedMembership = Guid.Empty; - logger.LogDebug($"the MembershipImport.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (importedMembershipProperty.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) + importedMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + dtoInstance.ImportedMembership = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedMembership = Guid.Parse(propertyValue); + logger.LogDebug("the MembershipImport.ImportedMembership property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) + { + dtoInstance.ImportedMembership = importedMembershipValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isRecursive"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isRecursiveSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the MembershipImport: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MergeNodeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MergeNodeDeSerializer.cs index ccf17d1d2..6f7a5ea8b 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MergeNodeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MergeNodeDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MergeNodeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMergeNode DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MergeNodeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMergeNode DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MergeNodeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.MergeNode(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.MergeNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MergeNodeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MergeNodeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "MergeNode") - { - throw new InvalidOperationException($"The MergeNodeDeSerializer can only be used to deserialize objects of type IMergeNode, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.MergeNode(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the MergeNode cannot be deserialized"); + throw new JsonException("Expected a property name in the MergeNode json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MergeNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.MergeNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MergeNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the MergeNode.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.MergeNode dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.MergeNode dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MergeNode json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MergeNode cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the MergeNode: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the MergeNode: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetaclassDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetaclassDeSerializer.cs index 305f76438..82052be41 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetaclassDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetaclassDeSerializer.cs @@ -22,1149 +22,1394 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Metadata; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MetaclassDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMetaclass DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Metadata; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MetaclassDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMetaclass DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetaclassDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetaclassDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MetaclassDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Metaclass json object."); + } - if (@type.GetString() != "Metaclass") - { - throw new InvalidOperationException($"The MetaclassDeSerializer can only be used to deserialize objects of type IMetaclass, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Metaclass cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Metaclass cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the shortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Metaclass json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Metaclass cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.Metaclass dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Metaclass: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataAccessExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataAccessExpressionDeSerializer.cs index 23c48406d..decb92b67 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataAccessExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataAccessExpressionDeSerializer.cs @@ -22,1774 +22,2149 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MetadataAccessExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMetadataAccessExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MetadataAccessExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMetadataAccessExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataAccessExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataAccessExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var referencedElementSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataAccessExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MetadataAccessExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MetadataAccessExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "MetadataAccessExpression") - { - throw new InvalidOperationException($"The MetadataAccessExpressionDeSerializer can only be used to deserialize objects of type IMetadataAccessExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MetadataAccessExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MetadataAccessExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the MetadataAccessExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + referencedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.referencedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the MetadataAccessExpression.referencedElement property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedElementValue)) + { + dtoInstance.referencedElement = referencedElementValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the MetadataAccessExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("referencedElement"u8, out var referencedElementProperty)) - { - if (referencedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.referencedElement = Guid.Empty; - logger.LogDebug($"the MetadataAccessExpression.referencedElement property was not found in the Json. The value is set to Guid.Empty"); - } - else + if (reader.ValueTextEquals("unioningType"u8)) { - if (referencedElementProperty.TryGetProperty("@id"u8, out var referencedElementExternalIdProperty)) - { - var propertyValue = referencedElementExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.referencedElement = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the referencedElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!referencedElementSeen) + { + logger.LogDebug("the referencedElement Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the MetadataAccessExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the shortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); } - else + if (!textualRepresentationSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the textualRepresentation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataAccessExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the MetadataAccessExpression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.MetadataAccessExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataAccessExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataDefinitionDeSerializer.cs index 595920690..8da008c5d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataDefinitionDeSerializer.cs @@ -22,1817 +22,2179 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Metadata; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MetadataDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMetadataDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Metadata; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MetadataDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMetadataDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the MetadataDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataDefinition json object."); + } - if (@type.GetString() != "MetadataDefinition") - { - throw new InvalidOperationException($"The MetadataDefinitionDeSerializer can only be used to deserialize objects of type IMetadataDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MetadataDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the MetadataDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MetadataDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataFeatureDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataFeatureDeSerializer.cs index f20fe241b..f26bfb72e 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataFeatureDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataFeatureDeSerializer.cs @@ -22,1796 +22,2168 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Metadata; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MetadataFeatureDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMetadataFeature DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Metadata; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MetadataFeatureDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMetadataFeature DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataFeatureDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataFeatureDeSerializer"); + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotationSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var metaclassSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataFeature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MetadataFeature cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MetadataFeatureDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "MetadataFeature") - { - throw new InvalidOperationException($"The MetadataFeatureDeSerializer can only be used to deserialize objects of type IMetadataFeature, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MetadataFeature cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - var propertyValue = arrayItem.GetString(); + annotatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) + { + dtoInstance.annotatedElement.Add(annotatedElementValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - foreach (var arrayItem in annotatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) - { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + annotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.annotatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MetadataFeature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the MetadataFeature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("metaclass"u8, out var metaclassProperty)) - { - if (metaclassProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("metaclass"u8)) { - dtoInstance.metaclass = null; - } - else - { - if (metaclassProperty.TryGetProperty("@id"u8, out var metaclassExternalIdProperty)) + metaclassSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.metaclass = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var metaclassValue)) { - var propertyValue = metaclassExternalIdProperty.GetString(); + dtoInstance.metaclass = metaclassValue; + } - if (propertyValue != null) - { - dtoInstance.metaclass = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("multiplicity"u8)) + { + multiplicitySeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the metaclass Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.multiplicity = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningMembership = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; - } - else + if (reader.ValueTextEquals("type"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!annotatedElementSeen) + { + logger.LogDebug("the annotatedElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!metaclassSeen) + { + logger.LogDebug("the metaclass Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) { - dtoInstance.owningType = null; + logger.LogDebug("the owningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); } - else + if (!qualifiedNameSeen) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + logger.LogDebug("the qualifiedName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataFeature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the MetadataFeature cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Metadata.MetadataFeature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataFeature: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataUsageDeSerializer.cs index 8fdc663f7..dcdde76c6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MetadataUsageDeSerializer.cs @@ -22,2554 +22,3049 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Metadata; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MetadataUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMetadataUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Metadata; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MetadataUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMetadataUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MetadataUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MetadataUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "MetadataUsage") - { - throw new InvalidOperationException($"The MetadataUsageDeSerializer can only be used to deserialize objects of type IMetadataUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var annotatedElementSeen = false; + var annotationSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var metadataDefinitionSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MetadataUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the MetadataUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the MetadataUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotatedElement"u8, out var annotatedElementProperty)) - { - foreach (var arrayItem in annotatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = annotatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.annotatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotatedElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + annotatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotatedElementValue)) { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); + dtoInstance.annotatedElement.Add(annotatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the annotation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + annotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.annotation.Add(annotationValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MetadataUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the MetadataUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("metadataDefinition"u8, out var metadataDefinitionProperty)) - { - if (metadataDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.metadataDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (metadataDefinitionProperty.TryGetProperty("@id"u8, out var metadataDefinitionExternalIdProperty)) - { - var propertyValue = metadataDefinitionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.metadataDefinition = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the metadataDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("metadataDefinition"u8)) { - dtoInstance.multiplicity = null; + metadataDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.metadataDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var metadataDefinitionValue)) + { + dtoInstance.metadataDefinition = metadataDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedDifferencing"u8)) + { + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - dtoInstance.owner = null; + owningAnnotatingRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningDefinition = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningMembership = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("variantMembership"u8)) + { + variantMembershipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!annotatedElementSeen) + { + logger.LogDebug("the annotatedElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!annotationSeen) + { + logger.LogDebug("the annotation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!metadataDefinitionSeen) + { + logger.LogDebug("the metadataDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); } - } - else + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MetadataUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MetadataUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Metadata.MetadataUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the MetadataUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityDeSerializer.cs index d1c3da561..a7d871f71 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityDeSerializer.cs @@ -22,1688 +22,2055 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MultiplicityDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMultiplicity DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MultiplicityDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMultiplicity DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MultiplicityDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Multiplicity(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Multiplicity dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MultiplicityDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Multiplicity json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Multiplicity cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MultiplicityDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Multiplicity") - { - throw new InvalidOperationException($"The MultiplicityDeSerializer can only be used to deserialize objects of type IMultiplicity, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Multiplicity(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Multiplicity cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Multiplicity dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Multiplicity.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Multiplicity.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.multiplicity = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedConjugator = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningNamespace = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Multiplicity dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (!aliasIdsSeen) { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + logger.LogDebug("the aliasIds Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Multiplicity dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Multiplicity json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Multiplicity cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Multiplicity: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs index 6f0c53e79..dc4982806 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/MultiplicityRangeDeSerializer.cs @@ -22,1757 +22,2127 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Multiplicities; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class MultiplicityRangeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IMultiplicityRange DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Multiplicities; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class MultiplicityRangeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IMultiplicityRange DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MultiplicityRangeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("MultiplicityRangeDeSerializer"); + var aliasIdsSeen = false; + var boundSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var lowerBoundSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + var upperBoundSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MultiplicityRange json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the MultiplicityRangeDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "MultiplicityRange") - { - throw new InvalidOperationException($"The MultiplicityRangeDeSerializer can only be used to deserialize objects of type IMultiplicityRange, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("bound"u8)) { - var propertyValue = arrayItem.GetString(); + boundSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var boundValue)) + { + dtoInstance.bound.Add(boundValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("bound"u8, out var boundProperty)) - { - foreach (var arrayItem in boundProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var boundExternalIdProperty)) - { - var propertyValue = boundExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.bound.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the bound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the MultiplicityRange.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the MultiplicityRange.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("lowerBound"u8, out var lowerBoundProperty)) - { - if (lowerBoundProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("lowerBound"u8)) { - dtoInstance.lowerBound = null; + lowerBoundSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.lowerBound = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var lowerBoundValue)) + { + dtoInstance.lowerBound = lowerBoundValue; + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (lowerBoundProperty.TryGetProperty("@id"u8, out var lowerBoundExternalIdProperty)) - { - var propertyValue = lowerBoundExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.lowerBound = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the lowerBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.multiplicity = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningMembership = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("upperBound"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + upperBoundSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.upperBound = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the MultiplicityRange.upperBound property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var upperBoundValue)) + { + dtoInstance.upperBound = upperBoundValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!boundSeen) + { + logger.LogDebug("the bound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + logger.LogDebug("the directedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!lowerBoundSeen) + { + logger.LogDebug("the lowerBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!upperBoundSeen) + { + logger.LogDebug("the upperBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the MultiplicityRange json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the MultiplicityRange cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = typeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("upperBound"u8, out var upperBoundProperty)) - { - if (upperBoundProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.upperBound = Guid.Empty; - logger.LogDebug($"the MultiplicityRange.upperBound property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("direction"u8)) { - if (upperBoundProperty.TryGetProperty("@id"u8, out var upperBoundExternalIdProperty)) - { - var propertyValue = upperBoundExternalIdProperty.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.upperBound = Guid.Parse(propertyValue); - } - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the upperBound Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Multiplicities.MultiplicityRange dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the MultiplicityRange: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceDeSerializer.cs index 9a612c2ba..33a474a8b 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceDeSerializer.cs @@ -22,641 +22,800 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Namespaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class NamespaceDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static INamespace DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Namespaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class NamespaceDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static INamespace DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.Namespace(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Namespace dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the NamespaceDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var importedMembershipSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var memberSeen = false; + var membershipSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedImportSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Namespace json object."); + } - if (@type.GetString() != "Namespace") - { - throw new InvalidOperationException($"The NamespaceDeSerializer can only be used to deserialize objects of type INamespace, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.Namespace(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Namespace cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Namespace cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Namespace dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the Namespace: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + logger.LogDebug("the declaredName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Namespace dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Namespace json object."); + } - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Namespace cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.Namespace dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Namespace: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceExposeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceExposeDeSerializer.cs index 843571d56..da04d2e5d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceExposeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceExposeDeSerializer.cs @@ -22,819 +22,1021 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class NamespaceExposeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static INamespaceExpose DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class NamespaceExposeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static INamespaceExpose DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceExposeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceExposeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the NamespaceExposeDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "NamespaceExpose") - { - throw new InvalidOperationException($"The NamespaceExposeDeSerializer can only be used to deserialize objects of type INamespaceExpose, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the NamespaceExpose cannot be deserialized"); - } - else + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var importedElementSeen = false; + var importedNamespaceSeen = false; + var importOwningNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isLibraryElementSeen = false; + var isRecursiveSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the NamespaceExpose json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the NamespaceExpose cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedElement"u8, out var importedElementProperty)) - { - if (importedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.importedElement = Guid.Empty; - logger.LogDebug($"the NamespaceExpose.importedElement property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (importedElementProperty.TryGetProperty("@id"u8, out var importedElementExternalIdProperty)) - { - var propertyValue = importedElementExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.importedElement = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedNamespace"u8, out var importedNamespaceProperty)) - { - if (importedNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceExpose.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedElement"u8)) { - if (importedNamespaceProperty.TryGetProperty("@id"u8, out var importedNamespaceExternalIdProperty)) + importedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedNamespaceExternalIdProperty.GetString(); + dtoInstance.importedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceExpose.importedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedElementValue)) + { + dtoInstance.importedElement = importedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the importedNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importOwningNamespace"u8, out var importOwningNamespaceProperty)) - { - if (importOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("importedNamespace"u8)) { - dtoInstance.importOwningNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceExpose.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + importedNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ImportedNamespace = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the NamespaceExpose.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedNamespaceValue)) + { + dtoInstance.ImportedNamespace = importedNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importOwningNamespace"u8)) { - if (importOwningNamespaceProperty.TryGetProperty("@id"u8, out var importOwningNamespaceExternalIdProperty)) + importOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.importOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.importOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceExpose.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importOwningNamespaceValue)) + { + dtoInstance.importOwningNamespace = importOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the importOwningNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isRecursive"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isRecursiveSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!importedElementSeen) + { + logger.LogDebug("the importedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!importedNamespaceSeen) + { + logger.LogDebug("the importedNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!importOwningNamespaceSeen) + { + logger.LogDebug("the importOwningNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var importedNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isRecursiveSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the NamespaceExpose json object."); + } - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the NamespaceExpose cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.NamespaceExpose dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedNamespace"u8, out var importedNamespaceProperty)) - { - if (importedNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceExpose.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedNamespace"u8)) { - if (importedNamespaceProperty.TryGetProperty("@id"u8, out var importedNamespaceExternalIdProperty)) + importedNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedNamespaceExternalIdProperty.GetString(); + dtoInstance.ImportedNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceExpose.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the importedNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedNamespaceValue)) + { + dtoInstance.ImportedNamespace = importedNamespaceValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isRecursive"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isRecursiveSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!importedNamespaceSeen) + { + logger.LogDebug("the importedNamespace Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the NamespaceExpose: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceImportDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceImportDeSerializer.cs index 63e3cebe6..89c6a1850 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceImportDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NamespaceImportDeSerializer.cs @@ -22,819 +22,1021 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Namespaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class NamespaceImportDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static INamespaceImport DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Namespaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class NamespaceImportDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static INamespaceImport DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceImportDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NamespaceImportDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the NamespaceImportDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "NamespaceImport") - { - throw new InvalidOperationException($"The NamespaceImportDeSerializer can only be used to deserialize objects of type INamespaceImport, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the NamespaceImport cannot be deserialized"); - } - else + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var importedElementSeen = false; + var importedNamespaceSeen = false; + var importOwningNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isLibraryElementSeen = false; + var isRecursiveSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the NamespaceImport json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the NamespaceImport cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedElement"u8, out var importedElementProperty)) - { - if (importedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.importedElement = Guid.Empty; - logger.LogDebug($"the NamespaceImport.importedElement property was not found in the Json. The value is set to Guid.Empty"); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (importedElementProperty.TryGetProperty("@id"u8, out var importedElementExternalIdProperty)) - { - var propertyValue = importedElementExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.importedElement = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedNamespace"u8, out var importedNamespaceProperty)) - { - if (importedNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceImport.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedElement"u8)) { - if (importedNamespaceProperty.TryGetProperty("@id"u8, out var importedNamespaceExternalIdProperty)) + importedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedNamespaceExternalIdProperty.GetString(); + dtoInstance.importedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceImport.importedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedElementValue)) + { + dtoInstance.importedElement = importedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the importedNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importOwningNamespace"u8, out var importOwningNamespaceProperty)) - { - if (importOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("importedNamespace"u8)) { - dtoInstance.importOwningNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceImport.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + importedNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ImportedNamespace = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the NamespaceImport.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedNamespaceValue)) + { + dtoInstance.ImportedNamespace = importedNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importOwningNamespace"u8)) { - if (importOwningNamespaceProperty.TryGetProperty("@id"u8, out var importOwningNamespaceExternalIdProperty)) + importOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.importOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.importOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceImport.importOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importOwningNamespaceValue)) + { + dtoInstance.importOwningNamespace = importOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the importOwningNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isRecursive"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isRecursiveSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!importedElementSeen) + { + logger.LogDebug("the importedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!importedNamespaceSeen) + { + logger.LogDebug("the importedNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!importOwningNamespaceSeen) + { + logger.LogDebug("the importOwningNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var importedNamespaceSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isImportAllSeen = false; + var isRecursiveSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the NamespaceImport json object."); + } - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the NamespaceImport cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.NamespaceImport dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedNamespace"u8, out var importedNamespaceProperty)) - { - if (importedNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ImportedNamespace = Guid.Empty; - logger.LogDebug($"the NamespaceImport.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedNamespace"u8)) { - if (importedNamespaceProperty.TryGetProperty("@id"u8, out var importedNamespaceExternalIdProperty)) + importedNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = importedNamespaceExternalIdProperty.GetString(); + dtoInstance.ImportedNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ImportedNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NamespaceImport.ImportedNamespace property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the importedNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedNamespaceValue)) + { + dtoInstance.ImportedNamespace = importedNamespaceValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImportAll"u8, out var isImportAllProperty)) - { - if (isImportAllProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImportAll = isImportAllProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImportAll Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isRecursive"u8, out var isRecursiveProperty)) - { - if (isRecursiveProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImportAll"u8)) { - dtoInstance.IsRecursive = isRecursiveProperty.GetBoolean(); + isImportAllSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImportAll = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isRecursive Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isRecursive"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isRecursiveSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsRecursive = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!importedNamespaceSeen) + { + logger.LogDebug("the importedNamespace Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isImportAllSeen) + { + logger.LogDebug("the isImportAll Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!isRecursiveSeen) + { + logger.LogDebug("the isRecursive Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the NamespaceImport: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NullExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NullExpressionDeSerializer.cs index e4799f5d7..9bd95c6a6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NullExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/NullExpressionDeSerializer.cs @@ -22,1749 +22,2122 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class NullExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static INullExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class NullExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static INullExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NullExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("NullExpressionDeSerializer"); + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the NullExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the NullExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the NullExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "NullExpression") - { - throw new InvalidOperationException($"The NullExpressionDeSerializer can only be used to deserialize objects of type INullExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the NullExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - var propertyValue = arrayItem.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) + { + dtoInstance.chainingFeature.Add(chainingFeatureValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the NullExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the NullExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the NullExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the NullExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the owningMembership Json property was not found in the NullExpression: {Id}", dtoInstance.Id); } - else + if (!owningNamespaceSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the owningNamespace Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the NullExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the NullExpression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.NullExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the NullExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ObjectiveMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ObjectiveMembershipDeSerializer.cs index 9f7b04aaa..99aacf672 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ObjectiveMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ObjectiveMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Cases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ObjectiveMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IObjectiveMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Cases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ObjectiveMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IObjectiveMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ObjectiveMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ObjectiveMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedObjectiveRequirementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ObjectiveMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ObjectiveMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ObjectiveMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ObjectiveMembership") - { - throw new InvalidOperationException($"The ObjectiveMembershipDeSerializer can only be used to deserialize objects of type IObjectiveMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ObjectiveMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberName"u8)) + { + ownedMemberNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedObjectiveRequirement"u8, out var ownedObjectiveRequirementProperty)) - { - if (ownedObjectiveRequirementProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("ownedMemberShortName"u8)) { - dtoInstance.ownedObjectiveRequirement = Guid.Empty; - logger.LogDebug($"the ObjectiveMembership.ownedObjectiveRequirement property was not found in the Json. The value is set to Guid.Empty"); + ownedMemberShortNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedObjectiveRequirement"u8)) { - if (ownedObjectiveRequirementProperty.TryGetProperty("@id"u8, out var ownedObjectiveRequirementExternalIdProperty)) + ownedObjectiveRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedObjectiveRequirementExternalIdProperty.GetString(); + dtoInstance.ownedObjectiveRequirement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedObjectiveRequirement = Guid.Parse(propertyValue); + logger.LogDebug("the ObjectiveMembership.ownedObjectiveRequirement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedObjectiveRequirementValue)) + { + dtoInstance.ownedObjectiveRequirement = ownedObjectiveRequirementValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedObjectiveRequirement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ObjectiveMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ObjectiveMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedObjectiveRequirementSeen) + { + logger.LogDebug("the ownedObjectiveRequirement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ObjectiveMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ObjectiveMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Cases.ObjectiveMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ObjectiveMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceDefinitionDeSerializer.cs index aba6eef23..5c09059c1 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceDefinitionDeSerializer.cs @@ -22,1817 +22,2179 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Occurrences; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class OccurrenceDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IOccurrenceDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Occurrences; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class OccurrenceDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IOccurrenceDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OccurrenceDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OccurrenceDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the OccurrenceDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OccurrenceDefinition json object."); + } - if (@type.GetString() != "OccurrenceDefinition") - { - throw new InvalidOperationException($"The OccurrenceDefinitionDeSerializer can only be used to deserialize objects of type IOccurrenceDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OccurrenceDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the OccurrenceDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OccurrenceDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OccurrenceDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceUsageDeSerializer.cs index 849e32f45..7a683cab3 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OccurrenceUsageDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Occurrences; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class OccurrenceUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IOccurrenceUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Occurrences; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class OccurrenceUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IOccurrenceUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OccurrenceUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OccurrenceUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the OccurrenceUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "OccurrenceUsage") - { - throw new InvalidOperationException($"The OccurrenceUsageDeSerializer can only be used to deserialize objects of type IOccurrenceUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the OccurrenceUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the OccurrenceUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the OccurrenceUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the OccurrenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the OccurrenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + isVariationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); } - } - else + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Occurrences.OccurrenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the elementId Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OccurrenceUsage json object."); + } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OccurrenceUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isOrdered"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isUnique"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the OccurrenceUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OperatorExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OperatorExpressionDeSerializer.cs index 0481ea5f6..81f99a143 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OperatorExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OperatorExpressionDeSerializer.cs @@ -22,1822 +22,2212 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class OperatorExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IOperatorExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class OperatorExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IOperatorExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OperatorExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OperatorExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OperatorExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OperatorExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the OperatorExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "OperatorExpression") - { - throw new InvalidOperationException($"The OperatorExpressionDeSerializer can only be used to deserialize objects of type IOperatorExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the OperatorExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the OperatorExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the OperatorExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the OperatorExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + logger.LogDebug("the OperatorExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = membershipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; - } - else + if (reader.ValueTextEquals("isVariable"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedCrossSubsetting = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningType = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the OperatorExpression.result property was not found in the Json. The value is set to Guid.Empty"); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the OperatorExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.OperatorExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OperatorExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OperatorExpression cannot be deserialized"); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OperatorExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs index 3bcbd9181..6f94a8fcd 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/OwningMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Namespaces; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class OwningMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IOwningMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Namespaces; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class OwningMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IOwningMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OwningMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("OwningMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var membershipOwningNamespaceSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OwningMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the OwningMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "OwningMembership") - { - throw new InvalidOperationException($"The OwningMembershipDeSerializer can only be used to deserialize objects of type IOwningMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the OwningMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the OwningMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElement"u8, out var ownedMemberElementProperty)) - { - if (ownedMemberElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedMemberElement = Guid.Empty; - logger.LogDebug($"the OwningMembership.ownedMemberElement property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedMemberElement"u8)) { - if (ownedMemberElementProperty.TryGetProperty("@id"u8, out var ownedMemberElementExternalIdProperty)) + ownedMemberElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedMemberElementExternalIdProperty.GetString(); + dtoInstance.ownedMemberElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedMemberElement = Guid.Parse(propertyValue); + logger.LogDebug("the OwningMembership.ownedMemberElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberElementValue)) + { + dtoInstance.ownedMemberElement = ownedMemberElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementSeen) + { + logger.LogDebug("the ownedMemberElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the OwningMembership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the OwningMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Namespaces.OwningMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the OwningMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PackageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PackageDeSerializer.cs index b6d8f1188..62efdc766 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PackageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PackageDeSerializer.cs @@ -22,661 +22,823 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Packages; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PackageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPackage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Packages; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PackageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPackage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PackageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.Package(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.Package dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PackageDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var filterConditionSeen = false; + var importedMembershipSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var memberSeen = false; + var membershipSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedImportSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Package json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Package cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PackageDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Package") - { - throw new InvalidOperationException($"The PackageDeSerializer can only be used to deserialize objects of type IPackage, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Packages.Package(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Package cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.Package dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("filterCondition"u8, out var filterConditionProperty)) - { - foreach (var arrayItem in filterConditionProperty.EnumerateArray()) + if (reader.ValueTextEquals("filterCondition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var filterConditionExternalIdProperty)) - { - var propertyValue = filterConditionExternalIdProperty.GetString(); + filterConditionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var filterConditionValue)) { - dtoInstance.filterCondition.Add(Guid.Parse(propertyValue)); + dtoInstance.filterCondition.Add(filterConditionValue); } } + + continue; } - } - else - { - logger.LogDebug("the filterCondition Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the Package: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!filterConditionSeen) + { + logger.LogDebug("the filterCondition Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Package: {Id}", dtoInstance.Id); } - } - else + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Package: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.Package dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the owningRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Package json object."); + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Package cannot be deserialized"); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Package: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Packages.Package dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Package: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Package: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ParameterMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ParameterMembershipDeSerializer.cs index 2f3c92e3f..a93123fcb 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ParameterMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ParameterMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Behaviors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ParameterMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IParameterMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Behaviors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ParameterMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IParameterMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ParameterMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ParameterMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberParameterSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ParameterMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ParameterMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ParameterMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ParameterMembership") - { - throw new InvalidOperationException($"The ParameterMembershipDeSerializer can only be used to deserialize objects of type IParameterMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ParameterMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; - } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + ownedMemberElementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + var ownedMemberElementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("ownedMemberParameter"u8, out var ownedMemberParameterProperty)) - { - if (ownedMemberParameterProperty.ValueKind == JsonValueKind.Null) + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberParameter = Guid.Empty; - logger.LogDebug($"the ParameterMembership.ownedMemberParameter property was not found in the Json. The value is set to Guid.Empty"); + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberParameter"u8)) { - if (ownedMemberParameterProperty.TryGetProperty("@id"u8, out var ownedMemberParameterExternalIdProperty)) + ownedMemberParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedMemberParameterExternalIdProperty.GetString(); + dtoInstance.ownedMemberParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedMemberParameter = Guid.Parse(propertyValue); + logger.LogDebug("the ParameterMembership.ownedMemberParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberParameterValue)) + { + dtoInstance.ownedMemberParameter = ownedMemberParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberParameter Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ParameterMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ParameterMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberParameterSeen) + { + logger.LogDebug("the ownedMemberParameter Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ParameterMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ParameterMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.ParameterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ParameterMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartDefinitionDeSerializer.cs index 427ea1de1..1f3ca9d10 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartDefinitionDeSerializer.cs @@ -22,1817 +22,2179 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Parts; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PartDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPartDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Parts; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PartDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPartDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PartDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Parts.PartDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PartDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the PartDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PartDefinition json object."); + } - if (@type.GetString() != "PartDefinition") - { - throw new InvalidOperationException($"The PartDefinitionDeSerializer can only be used to deserialize objects of type IPartDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Parts.PartDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PartDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the PartDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PartDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PartDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PartDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartUsageDeSerializer.cs index 7b048111f..2c9c88592 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PartUsageDeSerializer.cs @@ -22,2486 +22,2982 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Parts; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PartUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPartUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Parts; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PartUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPartUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PartUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Parts.PartUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PartUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PartUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "PartUsage") - { - throw new InvalidOperationException($"The PartUsageDeSerializer can only be used to deserialize objects of type IPartUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Parts.PartUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var partDefinitionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the PartUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the PartUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the PartUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the PartUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the PartUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + isVariationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("partDefinition"u8, out var partDefinitionProperty)) - { - foreach (var arrayItem in partDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("partDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var partDefinitionExternalIdProperty)) - { - var propertyValue = partDefinitionExternalIdProperty.GetString(); + partDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var partDefinitionValue)) { - dtoInstance.partDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.partDefinition.Add(partDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the partDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!partDefinitionSeen) + { + logger.LogDebug("the partDefinition Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Parts.PartUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PartUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the PartUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PartUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PartUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PayloadFeatureDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PayloadFeatureDeSerializer.cs index ce83922bf..ca1862f56 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PayloadFeatureDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PayloadFeatureDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Interactions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class PayloadFeatureDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class PayloadFeatureDeSerializer /// /// an instance of /// - internal static IPayloadFeature DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPayloadFeature DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PayloadFeatureDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PayloadFeatureDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "PayloadFeature") - { - throw new InvalidOperationException($"The PayloadFeatureDeSerializer can only be used to deserialize objects of type IPayloadFeature, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.PayloadFeature(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the PayloadFeature cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1604 +87,1986 @@ internal static IPayloadFeature DeSerialize(JsonElement jsonElement, Serializati /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.PayloadFeature dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.PayloadFeature dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - - if (propertyValue != null) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PayloadFeature json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the PayloadFeature cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the PayloadFeature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the PayloadFeature.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the type Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.PayloadFeature dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.PayloadFeature dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PayloadFeature json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PayloadFeature cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariable"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PayloadFeature: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PerformActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PerformActionUsageDeSerializer.cs index 510d8f96a..53e2287fc 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PerformActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PerformActionUsageDeSerializer.cs @@ -22,2471 +22,2963 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PerformActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPerformActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PerformActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPerformActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PerformActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PerformActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PerformActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "PerformActionUsage") - { - throw new InvalidOperationException($"The PerformActionUsageDeSerializer can only be used to deserialize objects of type IPerformActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var performedActionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the PerformActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the PerformActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PerformActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the PerformActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the PerformActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("performedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + performedActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.performedAction = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the PerformActionUsage.performedAction property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var performedActionValue)) + { + dtoInstance.performedAction = performedActionValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("performedAction"u8, out var performedActionProperty)) - { - if (performedActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.performedAction = Guid.Empty; - logger.LogDebug($"the PerformActionUsage.performedAction property was not found in the Json. The value is set to Guid.Empty"); + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (performedActionProperty.TryGetProperty("@id"u8, out var performedActionExternalIdProperty)) - { - var propertyValue = performedActionExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.performedAction = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the performedAction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!performedActionSeen) + { + logger.LogDebug("the performedAction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.PerformActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the declaredName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PerformActionUsage json object."); + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PerformActionUsage cannot be deserialized"); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PerformActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortConjugationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortConjugationDeSerializer.cs index 800c10551..77e56b66c 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortConjugationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortConjugationDeSerializer.cs @@ -22,778 +22,946 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Ports; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PortConjugationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPortConjugation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Ports; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PortConjugationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPortConjugation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortConjugationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortConjugation(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortConjugation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortConjugationDeSerializer"); + var aliasIdsSeen = false; + var conjugatedPortDefinitionSeen = false; + var conjugatedTypeSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var originalPortDefinitionSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PortConjugation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PortConjugation cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PortConjugationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "PortConjugation") - { - throw new InvalidOperationException($"The PortConjugationDeSerializer can only be used to deserialize objects of type IPortConjugation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortConjugation(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the PortConjugation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortConjugation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("conjugatedPortDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + conjugatedPortDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.conjugatedPortDefinition = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the PortConjugation.conjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedPortDefinitionValue)) + { + dtoInstance.conjugatedPortDefinition = conjugatedPortDefinitionValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedPortDefinition"u8, out var conjugatedPortDefinitionProperty)) - { - if (conjugatedPortDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.conjugatedPortDefinition = Guid.Empty; - logger.LogDebug($"the PortConjugation.conjugatedPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("conjugatedType"u8)) { - if (conjugatedPortDefinitionProperty.TryGetProperty("@id"u8, out var conjugatedPortDefinitionExternalIdProperty)) + conjugatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = conjugatedPortDefinitionExternalIdProperty.GetString(); + dtoInstance.ConjugatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.conjugatedPortDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the PortConjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedTypeValue)) + { + dtoInstance.ConjugatedType = conjugatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the conjugatedPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedType"u8, out var conjugatedTypeProperty)) - { - if (conjugatedTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ConjugatedType = Guid.Empty; - logger.LogDebug($"the PortConjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conjugatedTypeProperty.TryGetProperty("@id"u8, out var conjugatedTypeExternalIdProperty)) - { - var propertyValue = conjugatedTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ConjugatedType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the conjugatedType Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("originalPortDefinition"u8, out var originalPortDefinitionProperty)) - { - if (originalPortDefinitionProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.OriginalPortDefinition = Guid.Empty; - logger.LogDebug($"the PortConjugation.OriginalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("originalPortDefinition"u8)) { - if (originalPortDefinitionProperty.TryGetProperty("@id"u8, out var originalPortDefinitionExternalIdProperty)) + originalPortDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = originalPortDefinitionExternalIdProperty.GetString(); + dtoInstance.OriginalPortDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OriginalPortDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the PortConjugation.OriginalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var originalPortDefinitionValue)) + { + dtoInstance.OriginalPortDefinition = originalPortDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the originalPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!conjugatedPortDefinitionSeen) + { + logger.LogDebug("the conjugatedPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!conjugatedTypeSeen) + { + logger.LogDebug("the conjugatedType Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!originalPortDefinitionSeen) + { + logger.LogDebug("the originalPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortConjugation dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var conjugatedTypeSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var originalPortDefinitionSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PortConjugation json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PortConjugation cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortConjugation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedType"u8, out var conjugatedTypeProperty)) - { - if (conjugatedTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("conjugatedType"u8)) { - dtoInstance.ConjugatedType = Guid.Empty; - logger.LogDebug($"the PortConjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (conjugatedTypeProperty.TryGetProperty("@id"u8, out var conjugatedTypeExternalIdProperty)) + conjugatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = conjugatedTypeExternalIdProperty.GetString(); + dtoInstance.ConjugatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ConjugatedType = Guid.Parse(propertyValue); + logger.LogDebug("the PortConjugation.ConjugatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the conjugatedType Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedTypeValue)) + { + dtoInstance.ConjugatedType = conjugatedTypeValue; + } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("originalPortDefinition"u8, out var originalPortDefinitionProperty)) - { - if (originalPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.OriginalPortDefinition = Guid.Empty; - logger.LogDebug($"the PortConjugation.OriginalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (originalPortDefinitionProperty.TryGetProperty("@id"u8, out var originalPortDefinitionExternalIdProperty)) - { - var propertyValue = originalPortDefinitionExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OriginalPortDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the originalPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("originalPortDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + originalPortDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.OriginalPortDefinition = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the PortConjugation.OriginalPortDefinition property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var originalPortDefinitionValue)) + { + dtoInstance.OriginalPortDefinition = originalPortDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!conjugatedTypeSeen) + { + logger.LogDebug("the conjugatedType Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!originalPortDefinitionSeen) + { + logger.LogDebug("the originalPortDefinition Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortConjugation: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortDefinitionDeSerializer.cs index a5d8db371..de0fc082b 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortDefinitionDeSerializer.cs @@ -22,1841 +22,2201 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Ports; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PortDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPortDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Ports; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PortDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPortDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PortDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "PortDefinition") + var aliasIdsSeen = false; + var conjugatedPortDefinitionSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The PortDefinitionDeSerializer can only be used to deserialize objects of type IPortDefinition, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PortDefinition json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortDefinition(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PortDefinition cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the PortDefinition cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("conjugatedPortDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + conjugatedPortDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.conjugatedPortDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var conjugatedPortDefinitionValue)) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.conjugatedPortDefinition = conjugatedPortDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("conjugatedPortDefinition"u8, out var conjugatedPortDefinitionProperty)) - { - if (conjugatedPortDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.conjugatedPortDefinition = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (conjugatedPortDefinitionProperty.TryGetProperty("@id"u8, out var conjugatedPortDefinitionExternalIdProperty)) - { - var propertyValue = conjugatedPortDefinitionExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.conjugatedPortDefinition = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the conjugatedPortDefinition Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("membership"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedCase"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedView"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedView.Add(ownedViewValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) + { + dtoInstance.variant.Add(variantValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("variantMembership"u8)) + { + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!conjugatedPortDefinitionSeen) + { + logger.LogDebug("the conjugatedPortDefinition Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PortDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the PortDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortUsageDeSerializer.cs index 6d3cf4275..b854b05b9 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PortUsageDeSerializer.cs @@ -22,2446 +22,2936 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Ports; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PortUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPortUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Ports; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PortUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPortUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PortUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PortUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "PortUsage") - { - throw new InvalidOperationException($"The PortUsageDeSerializer can only be used to deserialize objects of type IPortUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Ports.PortUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portDefinitionSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the PortUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the PortUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the PortUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the PortUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the PortUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + isVariationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("member"u8)) + { + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("portDefinition"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + portDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var portDefinitionValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.portDefinition.Add(portDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portDefinition"u8, out var portDefinitionProperty)) - { - foreach (var arrayItem in portDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("portionKind"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var portDefinitionExternalIdProperty)) - { - var propertyValue = portDefinitionExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.portDefinition.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the portDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!portDefinitionSeen) + { + logger.LogDebug("the portDefinition Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Ports.PortUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the PortUsage json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.ElementId = propertyValue; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the PortUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the PortUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the PortUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PredicateDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PredicateDeSerializer.cs index 180f96bdc..12eb9865d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PredicateDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/PredicateDeSerializer.cs @@ -22,1226 +22,1485 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class PredicateDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IPredicate DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class PredicateDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IPredicate DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PredicateDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Predicate(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Predicate dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("PredicateDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Predicate json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Predicate cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the PredicateDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Predicate") - { - throw new InvalidOperationException($"The PredicateDeSerializer can only be used to deserialize objects of type IPredicate, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.Predicate(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Predicate cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Predicate dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Predicate.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the Predicate.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.step.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Predicate: {Id}", dtoInstance.Id); } - } - else + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Predicate dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the step Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Predicate json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Predicate cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.Predicate dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Predicate: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RedefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RedefinitionDeSerializer.cs index 862a4f104..e561a6dc5 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RedefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RedefinitionDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RedefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRedefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RedefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRedefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RedefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Redefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Redefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RedefinitionDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var redefinedFeatureSeen = false; + var redefiningFeatureSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Redefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Redefinition cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RedefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Redefinition") - { - throw new InvalidOperationException($"The RedefinitionDeSerializer can only be used to deserialize objects of type IRedefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Redefinition(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Redefinition cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Redefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeature"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) + { + dtoInstance.owningFeature = owningFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeature = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("redefinedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + redefinedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.RedefinedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the Redefinition.RedefinedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var redefinedFeatureValue)) + { + dtoInstance.RedefinedFeature = redefinedFeatureValue; + } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("redefiningFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + redefiningFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.RedefiningFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the Redefinition.RedefiningFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var redefiningFeatureValue)) + { + dtoInstance.RedefiningFeature = redefiningFeatureValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("redefinedFeature"u8, out var redefinedFeatureProperty)) - { - if (redefinedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.RedefinedFeature = Guid.Empty; - logger.LogDebug($"the Redefinition.RedefinedFeature property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (redefinedFeatureProperty.TryGetProperty("@id"u8, out var redefinedFeatureExternalIdProperty)) - { - var propertyValue = redefinedFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.RedefinedFeature = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the redefinedFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("redefiningFeature"u8, out var redefiningFeatureProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (redefiningFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.RedefiningFeature = Guid.Empty; - logger.LogDebug($"the Redefinition.RedefiningFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the Redefinition: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (redefiningFeatureProperty.TryGetProperty("@id"u8, out var redefiningFeatureExternalIdProperty)) - { - var propertyValue = redefiningFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.RedefiningFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); } - } - else + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!redefinedFeatureSeen) + { + logger.LogDebug("the redefinedFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!redefiningFeatureSeen) + { + logger.LogDebug("the redefiningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Redefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var redefinedFeatureSeen = false; + var redefiningFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the redefiningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Redefinition json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Redefinition cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Redefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("redefinedFeature"u8, out var redefinedFeatureProperty)) - { - if (redefinedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.RedefinedFeature = Guid.Empty; - logger.LogDebug($"the Redefinition.RedefinedFeature property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("redefinedFeature"u8)) { - if (redefinedFeatureProperty.TryGetProperty("@id"u8, out var redefinedFeatureExternalIdProperty)) + redefinedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = redefinedFeatureExternalIdProperty.GetString(); + dtoInstance.RedefinedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.RedefinedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the Redefinition.RedefinedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the redefinedFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var redefinedFeatureValue)) + { + dtoInstance.RedefinedFeature = redefinedFeatureValue; + } - if (jsonElement.TryGetProperty("redefiningFeature"u8, out var redefiningFeatureProperty)) - { - if (redefiningFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.RedefiningFeature = Guid.Empty; - logger.LogDebug($"the Redefinition.RedefiningFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("redefiningFeature"u8)) { - if (redefiningFeatureProperty.TryGetProperty("@id"u8, out var redefiningFeatureExternalIdProperty)) + redefiningFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = redefiningFeatureExternalIdProperty.GetString(); + dtoInstance.RedefiningFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.RedefiningFeature = Guid.Parse(propertyValue); + logger.LogDebug("the Redefinition.RedefiningFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var redefiningFeatureValue)) + { + dtoInstance.RedefiningFeature = redefiningFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the redefiningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!redefinedFeatureSeen) + { + logger.LogDebug("the redefinedFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + if (!redefiningFeatureSeen) + { + logger.LogDebug("the redefiningFeature Json property was not found in the Redefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs index dec4751b4..746b11010 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceSubsettingDeSerializer.cs @@ -22,728 +22,892 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ReferenceSubsettingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IReferenceSubsetting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ReferenceSubsettingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IReferenceSubsetting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReferenceSubsettingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReferenceSubsettingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var referencedFeatureSeen = false; + var referencingFeatureSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReferenceSubsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ReferenceSubsettingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ReferenceSubsetting") - { - throw new InvalidOperationException($"The ReferenceSubsettingDeSerializer can only be used to deserialize objects of type IReferenceSubsetting, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + referencedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.ReferencedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedFeatureValue)) + { + dtoInstance.ReferencedFeature = referencedFeatureValue; + } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("referencingFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + referencingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.referencingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.referencingFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencingFeatureValue)) + { + dtoInstance.referencingFeature = referencingFeatureValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("referencedFeature"u8, out var referencedFeatureProperty)) - { - if (referencedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.ReferencedFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (referencedFeatureProperty.TryGetProperty("@id"u8, out var referencedFeatureExternalIdProperty)) - { - var propertyValue = referencedFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.ReferencedFeature = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("referencingFeature"u8, out var referencingFeatureProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (referencingFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.referencingFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.referencingFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (referencingFeatureProperty.TryGetProperty("@id"u8, out var referencingFeatureExternalIdProperty)) - { - var propertyValue = referencingFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.referencingFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencedFeatureSeen) + { + logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencingFeatureSeen) + { + logger.LogDebug("the referencingFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); } - } - else + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var referencedFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the referencingFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReferenceSubsetting json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ReferenceSubsetting cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.ReferenceSubsetting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("referencedFeature"u8, out var referencedFeatureProperty)) - { - if (referencedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.ReferencedFeature = Guid.Empty; - logger.LogDebug($"the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("referencedFeature"u8)) { - if (referencedFeatureProperty.TryGetProperty("@id"u8, out var referencedFeatureExternalIdProperty)) + referencedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = referencedFeatureExternalIdProperty.GetString(); + dtoInstance.ReferencedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ReferencedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceSubsetting.ReferencedFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedFeatureValue)) + { + dtoInstance.ReferencedFeature = referencedFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + if (!referencedFeatureSeen) + { + logger.LogDebug("the referencedFeature Json property was not found in the ReferenceSubsetting: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceUsageDeSerializer.cs index 3658dd845..1c9101169 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReferenceUsageDeSerializer.cs @@ -22,2380 +22,2848 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ReferenceUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IReferenceUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ReferenceUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IReferenceUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReferenceUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReferenceUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ReferenceUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ReferenceUsage") - { - throw new InvalidOperationException($"The ReferenceUsageDeSerializer can only be used to deserialize objects of type IReferenceUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var definitionSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ReferenceUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ReferenceUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ReferenceUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("definition"u8, out var definitionProperty)) - { - foreach (var arrayItem in definitionProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var definitionExternalIdProperty)) - { - var propertyValue = definitionExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.definition.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the definition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("definition"u8)) + { + definitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var definitionValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.definition.Add(definitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ReferenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the ReferenceUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.multiplicity = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedView"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!crossFeatureSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the crossFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!definitionSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the definition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!differencingTypeSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the differencingType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!directedFeatureSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the directedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); } - } - else + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.ReferenceUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the isOrdered Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReferenceUsage json object."); + } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ReferenceUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.OwningRelationship = null; + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isConstant"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsDerived = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) + { + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReferenceUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingDefinitionDeSerializer.cs index bad62f1e1..572c44fd0 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingDefinitionDeSerializer.cs @@ -22,1837 +22,2202 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RenderingDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRenderingDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RenderingDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRenderingDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RenderingDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RenderingDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var renderingSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the RenderingDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RenderingDefinition json object."); + } - if (@type.GetString() != "RenderingDefinition") - { - throw new InvalidOperationException($"The RenderingDefinitionDeSerializer can only be used to deserialize objects of type IRenderingDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RenderingDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the RenderingDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("rendering"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + renderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var renderingValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.rendering.Add(renderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("rendering"u8, out var renderingProperty)) - { - foreach (var arrayItem in renderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var renderingExternalIdProperty)) - { - var propertyValue = renderingExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.rendering.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the rendering Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!renderingSeen) + { + logger.LogDebug("the rendering Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RenderingDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RenderingDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RenderingDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingUsageDeSerializer.cs index 0f636ce49..452e9c111 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RenderingUsageDeSerializer.cs @@ -22,2490 +22,2981 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RenderingUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRenderingUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RenderingUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRenderingUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RenderingUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.RenderingUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RenderingUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RenderingUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "RenderingUsage") - { - throw new InvalidOperationException($"The RenderingUsageDeSerializer can only be used to deserialize objects of type IRenderingUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.RenderingUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var renderingDefinitionSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the RenderingUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the RenderingUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the RenderingUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the RenderingUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the RenderingUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + isVariationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = memberExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("renderingDefinition"u8, out var renderingDefinitionProperty)) - { - if (renderingDefinitionProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.renderingDefinition = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("renderingDefinition"u8)) { - if (renderingDefinitionProperty.TryGetProperty("@id"u8, out var renderingDefinitionExternalIdProperty)) - { - var propertyValue = renderingDefinitionExternalIdProperty.GetString(); + renderingDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.renderingDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.renderingDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var renderingDefinitionValue)) + { + dtoInstance.renderingDefinition = renderingDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the renderingDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!renderingDefinitionSeen) + { + logger.LogDebug("the renderingDefinition Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.RenderingUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RenderingUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the RenderingUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RenderingUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementConstraintMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementConstraintMembershipDeSerializer.cs index 43be28178..90edc39f8 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementConstraintMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementConstraintMembershipDeSerializer.cs @@ -22,796 +22,1002 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RequirementConstraintMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRequirementConstraintMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RequirementConstraintMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRequirementConstraintMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementConstraintMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementConstraintMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedConstraintSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var referencedConstraintSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementConstraintMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementConstraintMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RequirementConstraintMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "RequirementConstraintMembership") - { - throw new InvalidOperationException($"The RequirementConstraintMembershipDeSerializer can only be used to deserialize objects of type IRequirementConstraintMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the RequirementConstraintMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - if (ownedConstraintProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConstraint = Guid.Empty; - logger.LogDebug($"the RequirementConstraintMembership.ownedConstraint property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (ownedConstraintProperty.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) + ownedConstraintSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + dtoInstance.ownedConstraint = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedConstraint = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementConstraintMembership.ownedConstraint property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) + { + dtoInstance.ownedConstraint = ownedConstraintValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementConstraintMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedConstraint"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + referencedConstraintSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.referencedConstraint = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementConstraintMembership.referencedConstraint property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedConstraintValue)) + { + dtoInstance.referencedConstraint = referencedConstraintValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the RequirementConstraintMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); - if (jsonElement.TryGetProperty("referencedConstraint"u8, out var referencedConstraintProperty)) + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (referencedConstraintProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.referencedConstraint = Guid.Empty; - logger.LogDebug($"the RequirementConstraintMembership.referencedConstraint property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (referencedConstraintProperty.TryGetProperty("@id"u8, out var referencedConstraintExternalIdProperty)) - { - var propertyValue = referencedConstraintExternalIdProperty.GetString(); + logger.LogDebug("the declaredName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!referencedConstraintSeen) + { + logger.LogDebug("the referencedConstraint Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementConstraintMembership json object."); + } - if (propertyValue != null) - { - dtoInstance.referencedConstraint = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementConstraintMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the referencedConstraint Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementConstraintMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + ownedRelatedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the RequirementConstraintMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementDefinitionDeSerializer.cs index bccde7ae4..0c7abe99f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementDefinitionDeSerializer.cs @@ -22,2036 +22,2437 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RequirementDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRequirementDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RequirementDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRequirementDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RequirementDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "RequirementDefinition") - { - throw new InvalidOperationException($"The RequirementDefinitionDeSerializer can only be used to deserialize objects of type IRequirementDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the RequirementDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the RequirementDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) - { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("reqId"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + reqIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the RequirementDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the RequirementDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the RequirementDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the RequirementDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.text.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the text Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the actorParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + var elementIdValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - } - } -} + dtoInstance.ReqId = reader.GetString(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs index e1c1e479b..37dca9987 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementUsageDeSerializer.cs @@ -22,2649 +22,3170 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RequirementUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRequirementUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RequirementUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRequirementUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RequirementUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "RequirementUsage") - { - throw new InvalidOperationException($"The RequirementUsageDeSerializer can only be used to deserialize objects of type IRequirementUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var requirementDefinitionSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the RequirementUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - var propertyValue = arrayItem.GetString(); + actorParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the RequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } - } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) { - var propertyValue = ownedElementExternalIdProperty.GetString(); + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedDifferencing"u8)) + { + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedMembership"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) + { + dtoInstance.ownedMembership.Add(ownedMembershipValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownerExternalIdProperty.GetString(); + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) + { + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningFeatureMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningMembership = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("reqId"u8)) { - dtoInstance.owningNamespace = null; + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("requirementDefinition"u8)) { - dtoInstance.OwningRelationship = null; + requirementDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.requirementDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requirementDefinitionValue)) + { + dtoInstance.requirementDefinition = requirementDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningUsageExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = parameterExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("requirementDefinition"u8, out var requirementDefinitionProperty)) - { - if (requirementDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.requirementDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (requirementDefinitionProperty.TryGetProperty("@id"u8, out var requirementDefinitionExternalIdProperty)) - { - var propertyValue = requirementDefinitionExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.requirementDefinition = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the requirementDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("usage"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the RequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) + { + dtoInstance.usage.Add(usageValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) - { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) + if (!actorParameterSeen) { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the RequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the actorParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - else + if (!aliasIdsSeen) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); } - } - else + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!requirementDefinitionSeen) + { + logger.LogDebug("the requirementDefinition Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the subjectParameter Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementUsage json object."); + } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.text.Add(propertyValue); + throw new JsonException("The @id property is not present, the RequirementUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the text Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.RequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("isComposite"u8)) { - var propertyValue = arrayItem.GetString(); + isCompositeSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType != JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.IsComposite = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isConstant"u8)) + { + isConstantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + isEndSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - } - } -} + continue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the RequirementUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementVerificationMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementVerificationMembershipDeSerializer.cs index ff7f5cd4c..d53a69e87 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementVerificationMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/RequirementVerificationMembershipDeSerializer.cs @@ -22,796 +22,1002 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.VerificationCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class RequirementVerificationMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IRequirementVerificationMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.VerificationCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class RequirementVerificationMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IRequirementVerificationMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementVerificationMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("RequirementVerificationMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRequirementSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var verifiedRequirementSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementVerificationMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementVerificationMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the RequirementVerificationMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "RequirementVerificationMembership") - { - throw new InvalidOperationException($"The RequirementVerificationMembershipDeSerializer can only be used to deserialize objects of type IRequirementVerificationMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the RequirementVerificationMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - if (ownedRequirementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedRequirement = Guid.Empty; - logger.LogDebug($"the RequirementVerificationMembership.ownedRequirement property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (ownedRequirementProperty.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) + ownedRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + dtoInstance.ownedRequirement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedRequirement = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementVerificationMembership.ownedRequirement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) + { + dtoInstance.ownedRequirement = ownedRequirementValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementVerificationMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the RequirementVerificationMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("verifiedRequirement"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + verifiedRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.verifiedRequirement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the RequirementVerificationMembership.verifiedRequirement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var verifiedRequirementValue)) + { + dtoInstance.verifiedRequirement = verifiedRequirementValue; + } + + continue; + } + + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!verifiedRequirementSeen) + { + logger.LogDebug("the verifiedRequirement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the RequirementVerificationMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the RequirementVerificationMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("verifiedRequirement"u8, out var verifiedRequirementProperty)) - { - if (verifiedRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.verifiedRequirement = Guid.Empty; - logger.LogDebug($"the RequirementVerificationMembership.verifiedRequirement property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (verifiedRequirementProperty.TryGetProperty("@id"u8, out var verifiedRequirementExternalIdProperty)) - { - var propertyValue = verifiedRequirementExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.verifiedRequirement = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the verifiedRequirement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.RequirementVerificationMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + ownedRelatedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = RequirementConstraintKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the RequirementVerificationMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ResultExpressionMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ResultExpressionMembershipDeSerializer.cs index 690c0e6c6..99ea406c9 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ResultExpressionMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ResultExpressionMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ResultExpressionMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IResultExpressionMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ResultExpressionMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IResultExpressionMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ResultExpressionMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ResultExpressionMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedResultExpressionSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ResultExpressionMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ResultExpressionMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ResultExpressionMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ResultExpressionMembership") - { - throw new InvalidOperationException($"The ResultExpressionMembershipDeSerializer can only be used to deserialize objects of type IResultExpressionMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ResultExpressionMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedResultExpression"u8, out var ownedResultExpressionProperty)) - { - if (ownedResultExpressionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedResultExpression = Guid.Empty; - logger.LogDebug($"the ResultExpressionMembership.ownedResultExpression property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedResultExpression"u8)) { - if (ownedResultExpressionProperty.TryGetProperty("@id"u8, out var ownedResultExpressionExternalIdProperty)) + ownedResultExpressionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedResultExpressionExternalIdProperty.GetString(); + dtoInstance.ownedResultExpression = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedResultExpression = Guid.Parse(propertyValue); + logger.LogDebug("the ResultExpressionMembership.ownedResultExpression property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedResultExpressionValue)) + { + dtoInstance.ownedResultExpression = ownedResultExpressionValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedResultExpression Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ResultExpressionMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ResultExpressionMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedResultExpressionSeen) + { + logger.LogDebug("the ownedResultExpression Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ResultExpressionMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ResultExpressionMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ResultExpressionMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ResultExpressionMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReturnParameterMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReturnParameterMembershipDeSerializer.cs index 71d74da6b..f7f084cb9 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReturnParameterMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ReturnParameterMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Functions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ReturnParameterMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IReturnParameterMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Functions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ReturnParameterMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IReturnParameterMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReturnParameterMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ReturnParameterMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberParameterSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReturnParameterMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ReturnParameterMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ReturnParameterMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ReturnParameterMembership") - { - throw new InvalidOperationException($"The ReturnParameterMembershipDeSerializer can only be used to deserialize objects of type IReturnParameterMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ReturnParameterMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberElementId"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; - } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + ownedMemberElementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + var ownedMemberElementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("ownedMemberParameter"u8, out var ownedMemberParameterProperty)) - { - if (ownedMemberParameterProperty.ValueKind == JsonValueKind.Null) + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberParameter = Guid.Empty; - logger.LogDebug($"the ReturnParameterMembership.ownedMemberParameter property was not found in the Json. The value is set to Guid.Empty"); + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("ownedMemberParameter"u8)) { - if (ownedMemberParameterProperty.TryGetProperty("@id"u8, out var ownedMemberParameterExternalIdProperty)) + ownedMemberParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedMemberParameterExternalIdProperty.GetString(); + dtoInstance.ownedMemberParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedMemberParameter = Guid.Parse(propertyValue); + logger.LogDebug("the ReturnParameterMembership.ownedMemberParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberParameterValue)) + { + dtoInstance.ownedMemberParameter = ownedMemberParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMemberParameter Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + dtoInstance.ownedMemberShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ReturnParameterMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ReturnParameterMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberParameterSeen) + { + logger.LogDebug("the ownedMemberParameter Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ReturnParameterMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ReturnParameterMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Functions.ReturnParameterMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ReturnParameterMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SatisfyRequirementUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SatisfyRequirementUsageDeSerializer.cs index 3612b8847..f3113ccaa 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SatisfyRequirementUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SatisfyRequirementUsageDeSerializer.cs @@ -22,2723 +22,3260 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SatisfyRequirementUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISatisfyRequirementUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SatisfyRequirementUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISatisfyRequirementUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SatisfyRequirementUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SatisfyRequirementUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SatisfyRequirementUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SatisfyRequirementUsage") - { - throw new InvalidOperationException($"The SatisfyRequirementUsageDeSerializer can only be used to deserialize objects of type ISatisfyRequirementUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var requirementDefinitionSeen = false; + var resultSeen = false; + var satisfiedRequirementSeen = false; + var satisfyingFeatureSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SatisfyRequirementUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the SatisfyRequirementUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SatisfyRequirementUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - var propertyValue = arrayItem.GetString(); + actorParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SatisfyRequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the SatisfyRequirementUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.multiplicity = null; + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) { - var propertyValue = ownedElementExternalIdProperty.GetString(); + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedDifferencing"u8)) + { + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningDefinition = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + dtoInstance.owningDefinition = owningDefinitionValue; + } - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) + { + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeatureMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + dtoInstance.owningNamespace = owningNamespaceValue; + } - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningNamespace = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("reqId"u8)) { - dtoInstance.OwningRelationship = null; + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("requirementDefinition"u8)) { - dtoInstance.owningType = null; + requirementDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.requirementDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requirementDefinitionValue)) + { + dtoInstance.requirementDefinition = requirementDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the SatisfyRequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("satisfiedRequirement"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) + satisfiedRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningUsageExternalIdProperty.GetString(); + dtoInstance.satisfiedRequirement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + logger.LogDebug("the SatisfyRequirementUsage.satisfiedRequirement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var satisfiedRequirementValue)) + { + dtoInstance.satisfiedRequirement = satisfiedRequirementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("satisfyingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + satisfyingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.satisfyingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SatisfyRequirementUsage.satisfyingFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var satisfyingFeatureValue)) + { + dtoInstance.satisfyingFeature = satisfyingFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("requirementDefinition"u8, out var requirementDefinitionProperty)) - { - if (requirementDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.requirementDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (requirementDefinitionProperty.TryGetProperty("@id"u8, out var requirementDefinitionExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = requirementDefinitionExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.requirementDefinition = Guid.Parse(propertyValue); + logger.LogDebug("the SatisfyRequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the requirementDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the SatisfyRequirementUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("text"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = resultExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.text.Add(textValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("satisfiedRequirement"u8, out var satisfiedRequirementProperty)) - { - if (satisfiedRequirementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.satisfiedRequirement = Guid.Empty; - logger.LogDebug($"the SatisfyRequirementUsage.satisfiedRequirement property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (satisfiedRequirementProperty.TryGetProperty("@id"u8, out var satisfiedRequirementExternalIdProperty)) - { - var propertyValue = satisfiedRequirementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.satisfiedRequirement = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the satisfiedRequirement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("satisfyingFeature"u8, out var satisfyingFeatureProperty)) - { - if (satisfyingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.satisfyingFeature = Guid.Empty; - logger.LogDebug($"the SatisfyRequirementUsage.satisfyingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (satisfyingFeatureProperty.TryGetProperty("@id"u8, out var satisfyingFeatureExternalIdProperty)) - { - var propertyValue = satisfyingFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.satisfyingFeature = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the satisfyingFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) - { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } - } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the SatisfyRequirementUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.text.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the text Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actorParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!requirementDefinitionSeen) + { + logger.LogDebug("the requirementDefinition Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!satisfiedRequirementSeen) + { + logger.LogDebug("the satisfiedRequirement Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!satisfyingFeatureSeen) + { + logger.LogDebug("the satisfyingFeature Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); } - } - else + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isNegatedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SatisfyRequirementUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SatisfyRequirementUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SatisfyRequirementUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isNegated"u8, out var isNegatedProperty)) - { - if (isNegatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isNegated"u8)) { - dtoInstance.IsNegated = isNegatedProperty.GetBoolean(); + isNegatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsNegated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isNegated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - } - } -} + continue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isNegatedSeen) + { + logger.LogDebug("the isNegated Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the SatisfyRequirementUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs index 4b933fd3a..6f3d2c711 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SelectExpressionDeSerializer.cs @@ -22,1822 +22,2212 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Expressions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SelectExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISelectExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Expressions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SelectExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISelectExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SelectExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SelectExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var operatorSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SelectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SelectExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "SelectExpression") - { - throw new InvalidOperationException($"The SelectExpressionDeSerializer can only be used to deserialize objects of type ISelectExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SelectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the SelectExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.function = null; + continue; } - else + + if (reader.ValueTextEquals("function"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + functionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.function = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the SelectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + logger.LogDebug("the SelectExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = membershipExternalIdProperty.GetString(); + dtoInstance.IsUnique = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } - } + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; - } - else + if (reader.ValueTextEquals("isVariable"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Operator = propertyValue; + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedCrossSubsetting = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + operatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + var operatorValue = reader.GetString(); + + if (operatorValue != null) + { + dtoInstance.Operator = operatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningType = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the SelectExpression.result property was not found in the Json. The value is set to Guid.Empty"); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.qualifiedName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SelectExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("type"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Expressions.SelectExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var operatorSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SelectExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SelectExpression cannot be deserialized"); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.ElementId = propertyValue; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } + isOrderedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("operator"u8, out var operatorProperty)) - { - var propertyValue = operatorProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.Operator = propertyValue; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("operator"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + operatorSeen = true; + reader.Read(); + + var operatorValue = reader.GetString(); + + if (operatorValue != null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Operator = operatorValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!operatorSeen) + { + logger.LogDebug("the operator Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SelectExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SendActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SendActionUsageDeSerializer.cs index 575c20788..ee17fbb3d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SendActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SendActionUsageDeSerializer.cs @@ -22,2518 +22,3002 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SendActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISendActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SendActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISendActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SendActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SendActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SendActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SendActionUsage") - { - throw new InvalidOperationException($"The SendActionUsageDeSerializer can only be used to deserialize objects of type ISendActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var payloadArgumentSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var receiverArgumentSeen = false; + var senderArgumentSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the SendActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the SendActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SendActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SendActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SendActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("payloadArgument"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadArgumentSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadArgumentValue)) + { + dtoInstance.payloadArgument = payloadArgumentValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.OwningRelationship = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("receiverArgument"u8)) { - dtoInstance.owningType = null; + receiverArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.receiverArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var receiverArgumentValue)) + { + dtoInstance.receiverArgument = receiverArgumentValue; + } + + continue; } - else + + if (reader.ValueTextEquals("senderArgument"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + senderArgumentSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.senderArgument = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var senderArgumentValue)) + { + dtoInstance.senderArgument = senderArgumentValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadArgument"u8, out var payloadArgumentProperty)) - { - if (payloadArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadArgument = null; + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (payloadArgumentProperty.TryGetProperty("@id"u8, out var payloadArgumentExternalIdProperty)) - { - var propertyValue = payloadArgumentExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.payloadArgument = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the payloadArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("variant"u8)) + { + variantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("receiverArgument"u8, out var receiverArgumentProperty)) - { - if (receiverArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.receiverArgument = null; - } - else - { - if (receiverArgumentProperty.TryGetProperty("@id"u8, out var receiverArgumentExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = receiverArgumentExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.receiverArgument = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the receiverArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("senderArgument"u8, out var senderArgumentProperty)) - { - if (senderArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.senderArgument = null; + continue; } - else + + if (reader.ValueTextEquals("variantMembership"u8)) { - if (senderArgumentProperty.TryGetProperty("@id"u8, out var senderArgumentExternalIdProperty)) - { - var propertyValue = senderArgumentExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.senderArgument = Guid.Parse(propertyValue); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the senderArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!actionDefinitionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actionDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!payloadArgumentSeen) + { + logger.LogDebug("the payloadArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!receiverArgumentSeen) + { + logger.LogDebug("the receiverArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!senderArgumentSeen) + { + logger.LogDebug("the senderArgument Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); } - } - else + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the textualRepresentation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SendActionUsage json object."); + } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SendActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = usageExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.SendActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SendActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SpecializationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SpecializationDeSerializer.cs index df0d8cd7c..ea6f5f7fa 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SpecializationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SpecializationDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SpecializationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISpecialization DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SpecializationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISpecialization DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SpecializationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Specialization(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Specialization dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SpecializationDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var generalSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var specificSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Specialization json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Specialization cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SpecializationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Specialization") - { - throw new InvalidOperationException($"The SpecializationDeSerializer can only be used to deserialize objects of type ISpecialization, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Specialization(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Specialization cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Specialization dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("general"u8, out var generalProperty)) - { - if (generalProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.General = Guid.Empty; - logger.LogDebug($"the Specialization.General property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("general"u8)) { - if (generalProperty.TryGetProperty("@id"u8, out var generalExternalIdProperty)) + generalSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = generalExternalIdProperty.GetString(); + dtoInstance.General = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.General = Guid.Parse(propertyValue); + logger.LogDebug("the Specialization.General property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var generalValue)) + { + dtoInstance.General = generalValue; + } + + continue; } - } - else - { - logger.LogDebug("the general Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelatedElement = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelationship = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("specific"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + specificSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.Specific = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the Specialization.Specific property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var specificValue)) + { + dtoInstance.Specific = specificValue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("specific"u8, out var specificProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (specificProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.Specific = Guid.Empty; - logger.LogDebug($"the Specialization.Specific property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the Specialization: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (specificProperty.TryGetProperty("@id"u8, out var specificExternalIdProperty)) - { - var propertyValue = specificExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Specific = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!generalSeen) + { + logger.LogDebug("the general Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Specialization: {Id}", dtoInstance.Id); } - } - else + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!specificSeen) + { + logger.LogDebug("the specific Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Specialization dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var generalSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var specificSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the specific Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Specialization json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Specialization cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Specialization dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("general"u8, out var generalProperty)) - { - if (generalProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.General = Guid.Empty; - logger.LogDebug($"the Specialization.General property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("general"u8)) { - if (generalProperty.TryGetProperty("@id"u8, out var generalExternalIdProperty)) + generalSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = generalExternalIdProperty.GetString(); + dtoInstance.General = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.General = Guid.Parse(propertyValue); + logger.LogDebug("the Specialization.General property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the general Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var generalValue)) + { + dtoInstance.General = generalValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("specific"u8, out var specificProperty)) - { - if (specificProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.Specific = Guid.Empty; - logger.LogDebug($"the Specialization.Specific property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("specific"u8)) { - if (specificProperty.TryGetProperty("@id"u8, out var specificExternalIdProperty)) + specificSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = specificExternalIdProperty.GetString(); + dtoInstance.Specific = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Specific = Guid.Parse(propertyValue); + logger.LogDebug("the Specialization.Specific property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var specificValue)) + { + dtoInstance.Specific = specificValue; + } + + continue; } - } - else - { - logger.LogDebug("the specific Json property was not found in the Specialization: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!generalSeen) + { + logger.LogDebug("the general Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + if (!specificSeen) + { + logger.LogDebug("the specific Json property was not found in the Specialization: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StakeholderMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StakeholderMembershipDeSerializer.cs index e45a8dcfe..e1d11b282 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StakeholderMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StakeholderMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StakeholderMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStakeholderMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StakeholderMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStakeholderMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StakeholderMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StakeholderMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedStakeholderParameterSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StakeholderMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StakeholderMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StakeholderMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "StakeholderMembership") - { - throw new InvalidOperationException($"The StakeholderMembershipDeSerializer can only be used to deserialize objects of type IStakeholderMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the StakeholderMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedStakeholderParameter"u8, out var ownedStakeholderParameterProperty)) - { - if (ownedStakeholderParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedStakeholderParameter = Guid.Empty; - logger.LogDebug($"the StakeholderMembership.ownedStakeholderParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedStakeholderParameter"u8)) { - if (ownedStakeholderParameterProperty.TryGetProperty("@id"u8, out var ownedStakeholderParameterExternalIdProperty)) + ownedStakeholderParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedStakeholderParameterExternalIdProperty.GetString(); + dtoInstance.ownedStakeholderParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedStakeholderParameter = Guid.Parse(propertyValue); + logger.LogDebug("the StakeholderMembership.ownedStakeholderParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStakeholderParameterValue)) + { + dtoInstance.ownedStakeholderParameter = ownedStakeholderParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedStakeholderParameter Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the StakeholderMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the StakeholderMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedStakeholderParameterSeen) + { + logger.LogDebug("the ownedStakeholderParameter Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StakeholderMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StakeholderMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.StakeholderMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the StakeholderMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateDefinitionDeSerializer.cs index 7faa56123..2ab0634bf 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateDefinitionDeSerializer.cs @@ -22,1973 +22,2350 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StateDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStateDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StateDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStateDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StateDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "StateDefinition") - { - throw new InvalidOperationException($"The StateDefinitionDeSerializer can only be used to deserialize objects of type IStateDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var doActionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var entryActionSeen = false; + var exitActionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isParallelSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var stateSeen = false; + var stepSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the StateDefinition cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the StateDefinition json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.action.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StateDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - var propertyValue = arrayItem.GetString(); + actionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) + { + dtoInstance.action.Add(actionValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("doAction"u8, out var doActionProperty)) - { - if (doActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.doAction = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("differencingType"u8)) { - if (doActionProperty.TryGetProperty("@id"u8, out var doActionExternalIdProperty)) - { - var propertyValue = doActionExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.doAction = Guid.Parse(propertyValue); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the doAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("doAction"u8)) { - dtoInstance.ElementId = propertyValue; + doActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.doAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var doActionValue)) + { + dtoInstance.doAction = doActionValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("entryAction"u8, out var entryActionProperty)) - { - if (entryActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.entryAction = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (entryActionProperty.TryGetProperty("@id"u8, out var entryActionExternalIdProperty)) - { - var propertyValue = entryActionExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.entryAction = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the entryAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("exitAction"u8, out var exitActionProperty)) - { - if (exitActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("entryAction"u8)) { - dtoInstance.exitAction = null; + entryActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.entryAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var entryActionValue)) + { + dtoInstance.entryAction = entryActionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("exitAction"u8)) { - if (exitActionProperty.TryGetProperty("@id"u8, out var exitActionExternalIdProperty)) - { - var propertyValue = exitActionExternalIdProperty.GetString(); + exitActionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.exitAction = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.exitAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var exitActionValue)) + { + dtoInstance.exitAction = exitActionValue; } + + continue; } - } - else - { - logger.LogDebug("the exitAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isParallel"u8)) { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); + isParallelSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("state"u8, out var stateProperty)) - { - foreach (var arrayItem in stateProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("state"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stateExternalIdProperty)) - { - var propertyValue = stateExternalIdProperty.GetString(); + stateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stateValue)) { - dtoInstance.state.Add(Guid.Parse(propertyValue)); + dtoInstance.state.Add(stateValue); } } + + continue; } - } - else - { - logger.LogDebug("the state Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } + + continue; } - } - else - { - logger.LogDebug("the step Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionSeen) + { + logger.LogDebug("the action Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!doActionSeen) + { + logger.LogDebug("the doAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!entryActionSeen) + { + logger.LogDebug("the entryAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!exitActionSeen) + { + logger.LogDebug("the exitAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!stateSeen) + { + logger.LogDebug("the state Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isParallelSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StateDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the StateDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isParallel"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isParallelSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateSubactionMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateSubactionMembershipDeSerializer.cs index 27586bf08..f989d0dfa 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateSubactionMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateSubactionMembershipDeSerializer.cs @@ -22,771 +22,975 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StateSubactionMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStateSubactionMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StateSubactionMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStateSubactionMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateSubactionMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateSubactionMembershipDeSerializer"); + var actionSeen = false; + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StateSubactionMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StateSubactionMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StateSubactionMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "StateSubactionMembership") - { - throw new InvalidOperationException($"The StateSubactionMembershipDeSerializer can only be used to deserialize objects of type IStateSubactionMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("action"u8)) + { + actionSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership(); + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.action = Guid.Empty; - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (logger.IsEnabled(LogLevel.Debug)) + { + logger.LogDebug("the StateSubactionMembership.action property was not found in the Json. The value is set to Guid.Empty"); + } + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) + { + dtoInstance.action = actionValue; + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the StateSubactionMembership cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - if (actionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.action = Guid.Empty; - logger.LogDebug($"the StateSubactionMembership.action property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (actionProperty.TryGetProperty("@id"u8, out var actionExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = actionExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.action = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = StateSubactionKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = StateSubactionKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the StateSubactionMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (!actionSeen) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the StateSubactionMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the action Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); } - else + if (!aliasIdsSeen) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the aliasIds Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); } - } - else + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the owningType Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StateSubactionMembership json object."); + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StateSubactionMembership cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateSubactionMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); - if (propertyValue != null) + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = StateSubactionKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + ownedRelatedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = StateSubactionKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the StateSubactionMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateUsageDeSerializer.cs index 8e6fb3493..d3bfc9817 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StateUsageDeSerializer.cs @@ -22,2542 +22,3038 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StateUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStateUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StateUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStateUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StateUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StateUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "StateUsage") - { - throw new InvalidOperationException($"The StateUsageDeSerializer can only be used to deserialize objects of type IStateUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.StateUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var doActionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var entryActionSeen = false; + var exitActionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isParallelSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var stateDefinitionSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the StateUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the StateUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the StateUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; - } - else - { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("chainingFeature"u8)) + { + chainingFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("doAction"u8, out var doActionProperty)) - { - if (doActionProperty.ValueKind == JsonValueKind.Null) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.doAction = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("differencingType"u8)) { - if (doActionProperty.TryGetProperty("@id"u8, out var doActionExternalIdProperty)) - { - var propertyValue = doActionExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.doAction = Guid.Parse(propertyValue); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the doAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("doAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + doActionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.doAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var doActionValue)) + { + dtoInstance.doAction = doActionValue; } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("documentation"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("entryAction"u8, out var entryActionProperty)) - { - if (entryActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.entryAction = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (entryActionProperty.TryGetProperty("@id"u8, out var entryActionExternalIdProperty)) - { - var propertyValue = entryActionExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.entryAction = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the entryAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("exitAction"u8, out var exitActionProperty)) - { - if (exitActionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.exitAction = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("entryAction"u8)) { - if (exitActionProperty.TryGetProperty("@id"u8, out var exitActionExternalIdProperty)) - { - var propertyValue = exitActionExternalIdProperty.GetString(); + entryActionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.exitAction = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.entryAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var entryActionValue)) + { + dtoInstance.entryAction = entryActionValue; } + + continue; } - } - else - { - logger.LogDebug("the exitAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("exitAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + exitActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.exitAction = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var exitActionValue)) + { + dtoInstance.exitAction = exitActionValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the StateUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the StateUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isParallel"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isParallelSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + isPortionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + isReferenceSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.multiplicity = null; + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningFeatureMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningMembership = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.OwningRelationship = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningType = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("stateDefinition"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + stateDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stateDefinitionValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.stateDefinition.Add(stateDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("unioningType"u8)) + { + unioningTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("stateDefinition"u8, out var stateDefinitionProperty)) - { - foreach (var arrayItem in stateDefinitionProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var stateDefinitionExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stateDefinitionExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.stateDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the stateDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!doActionSeen) + { + logger.LogDebug("the doAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!entryActionSeen) + { + logger.LogDebug("the entryAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!exitActionSeen) + { + logger.LogDebug("the exitAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!stateDefinitionSeen) + { + logger.LogDebug("the stateDefinition Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isParallelSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the StateUsage json object."); + } - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the StateUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.StateUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isParallel"u8, out var isParallelProperty)) - { - if (isParallelProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsParallel = isParallelProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isParallel Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isParallel"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isParallelSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsParallel = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the StateUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isParallelSeen) + { + logger.LogDebug("the isParallel Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the StateUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StepDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StepDeSerializer.cs index f97dcc9bd..89cb19ebc 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StepDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StepDeSerializer.cs @@ -22,1708 +22,2078 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Behaviors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StepDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStep DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Behaviors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StepDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStep DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StepDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.Step(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Step dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StepDeSerializer"); + var aliasIdsSeen = false; + var behaviorSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Step json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Step cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StepDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Step") - { - throw new InvalidOperationException($"The StepDeSerializer can only be used to deserialize objects of type IStep, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Behaviors.Step(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Step cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Step dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("behavior"u8)) { - var propertyValue = arrayItem.GetString(); + behaviorSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var behaviorValue)) + { + dtoInstance.behavior.Add(behaviorValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("behavior"u8, out var behaviorProperty)) - { - foreach (var arrayItem in behaviorProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var behaviorExternalIdProperty)) - { - var propertyValue = behaviorExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.behavior.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the behavior Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Step: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Step.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Step.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Step: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Step: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.multiplicity = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Step: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.ownedConjugator = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningNamespace = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningType = owningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningType = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("shortName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("type"u8)) + { + typeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.type.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!behaviorSeen) + { + logger.LogDebug("the behavior Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + logger.LogDebug("the unioningType Json property was not found in the Step: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Step dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Step json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + throw new JsonException("The @id property is not present, the Step cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Step: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Behaviors.Step dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Step: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Step: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.OwningRelationship = null; + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Step: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StructureDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StructureDeSerializer.cs index 27da1bd69..95b9faca0 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StructureDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/StructureDeSerializer.cs @@ -22,1149 +22,1394 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Structures; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class StructureDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IStructure DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Structures; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class StructureDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IStructure DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StructureDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Structures.Structure(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Structures.Structure dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("StructureDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the StructureDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubclassificationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Structure json object."); + } - if (@type.GetString() != "Structure") - { - throw new InvalidOperationException($"The StructureDeSerializer can only be used to deserialize objects of type IStructure, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Structures.Structure(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Structure cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Structure cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Structures.Structure dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the shortName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Structures.Structure dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Structure json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Structure cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Structures.Structure dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Structure: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Structure: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs index 66631e4f0..4eb591f74 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubclassificationDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Classifiers; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SubclassificationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISubclassification DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Classifiers; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SubclassificationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISubclassification DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubclassificationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Classifiers.Subclassification(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubclassificationDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningClassifierSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var subclassifierSeen = false; + var superclassifierSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Subclassification json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SubclassificationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Subclassification") - { - throw new InvalidOperationException($"The SubclassificationDeSerializer can only be used to deserialize objects of type ISubclassification, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Classifiers.Subclassification(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningClassifier"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningClassifierSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningClassifier = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningClassifierValue)) + { + dtoInstance.owningClassifier = owningClassifierValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningClassifier"u8, out var owningClassifierProperty)) - { - if (owningClassifierProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningClassifier = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningClassifierProperty.TryGetProperty("@id"u8, out var owningClassifierExternalIdProperty)) - { - var propertyValue = owningClassifierExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningClassifier = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningClassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subclassifier"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + subclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.Subclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subclassifierValue)) + { + dtoInstance.Subclassifier = subclassifierValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("superclassifier"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + superclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.Superclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var superclassifierValue)) + { + dtoInstance.Superclassifier = superclassifierValue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subclassifier"u8, out var subclassifierProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (subclassifierProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.Subclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (subclassifierProperty.TryGetProperty("@id"u8, out var subclassifierExternalIdProperty)) - { - var propertyValue = subclassifierExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.Subclassifier = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("superclassifier"u8, out var superclassifierProperty)) + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningClassifierSeen) + { + logger.LogDebug("the owningClassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!subclassifierSeen) + { + logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!superclassifierSeen) + { + logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var subclassifierSeen = false; + var superclassifierSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (superclassifierProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Superclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); + throw new JsonException("Expected a property name in the Subclassification json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - if (superclassifierProperty.TryGetProperty("@id"u8, out var superclassifierExternalIdProperty)) - { - var propertyValue = superclassifierExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.Superclassifier = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Subclassification cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Classifiers.Subclassification dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subclassifier"u8, out var subclassifierProperty)) - { - if (subclassifierProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.Subclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("subclassifier"u8)) { - if (subclassifierProperty.TryGetProperty("@id"u8, out var subclassifierExternalIdProperty)) + subclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subclassifierExternalIdProperty.GetString(); + dtoInstance.Subclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Subclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Subclassifier property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subclassifierValue)) + { + dtoInstance.Subclassifier = subclassifierValue; + } - if (jsonElement.TryGetProperty("superclassifier"u8, out var superclassifierProperty)) - { - if (superclassifierProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.Superclassifier = Guid.Empty; - logger.LogDebug($"the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("superclassifier"u8)) { - if (superclassifierProperty.TryGetProperty("@id"u8, out var superclassifierExternalIdProperty)) + superclassifierSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = superclassifierExternalIdProperty.GetString(); + dtoInstance.Superclassifier = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.Superclassifier = Guid.Parse(propertyValue); + logger.LogDebug("the Subclassification.Superclassifier property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var superclassifierValue)) + { + dtoInstance.Superclassifier = superclassifierValue; + } + + continue; } - } - else - { - logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!subclassifierSeen) + { + logger.LogDebug("the subclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + if (!superclassifierSeen) + { + logger.LogDebug("the superclassifier Json property was not found in the Subclassification: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubjectMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubjectMembershipDeSerializer.cs index 621b7a7ff..b9eb9764f 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubjectMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubjectMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Requirements; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SubjectMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISubjectMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Requirements; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SubjectMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISubjectMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubjectMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubjectMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSubjectParameterSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SubjectMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SubjectMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SubjectMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "SubjectMembership") - { - throw new InvalidOperationException($"The SubjectMembershipDeSerializer can only be used to deserialize objects of type ISubjectMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SubjectMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubjectParameter"u8, out var ownedSubjectParameterProperty)) - { - if (ownedSubjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedSubjectParameter = Guid.Empty; - logger.LogDebug($"the SubjectMembership.ownedSubjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedSubjectParameter"u8)) { - if (ownedSubjectParameterProperty.TryGetProperty("@id"u8, out var ownedSubjectParameterExternalIdProperty)) + ownedSubjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedSubjectParameterExternalIdProperty.GetString(); + dtoInstance.ownedSubjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedSubjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the SubjectMembership.ownedSubjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubjectParameterValue)) + { + dtoInstance.ownedSubjectParameter = ownedSubjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedSubjectParameter Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the SubjectMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the SubjectMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("visibility"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedSubjectParameterSeen) + { + logger.LogDebug("the ownedSubjectParameter Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SubjectMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SubjectMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Requirements.SubjectMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the SubjectMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubsettingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubsettingDeSerializer.cs index 69aaf314d..27ffd9a35 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubsettingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SubsettingDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SubsettingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISubsetting DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SubsettingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISubsetting DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubsettingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Subsetting(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Subsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SubsettingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var subsettedFeatureSeen = false; + var subsettingFeatureSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Subsetting json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Subsetting cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SubsettingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Subsetting") - { - throw new InvalidOperationException($"The SubsettingDeSerializer can only be used to deserialize objects of type ISubsetting, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.Subsetting(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Subsetting cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Subsetting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeature"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureValue)) + { + dtoInstance.owningFeature = owningFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeature"u8, out var owningFeatureProperty)) - { - if (owningFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeature = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureProperty.TryGetProperty("@id"u8, out var owningFeatureExternalIdProperty)) - { - var propertyValue = owningFeatureExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subsettedFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + subsettedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.SubsettedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the Subsetting.SubsettedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subsettedFeatureValue)) + { + dtoInstance.SubsettedFeature = subsettedFeatureValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("subsettingFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + subsettingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.SubsettingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the Subsetting.SubsettingFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subsettingFeatureValue)) + { + dtoInstance.SubsettingFeature = subsettingFeatureValue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subsettedFeature"u8, out var subsettedFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (subsettedFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.SubsettedFeature = Guid.Empty; - logger.LogDebug($"the Subsetting.SubsettedFeature property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the Subsetting: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (subsettedFeatureProperty.TryGetProperty("@id"u8, out var subsettedFeatureExternalIdProperty)) - { - var propertyValue = subsettedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.SubsettedFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the subsettedFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("subsettingFeature"u8, out var subsettingFeatureProperty)) + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningFeatureSeen) + { + logger.LogDebug("the owningFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!subsettedFeatureSeen) + { + logger.LogDebug("the subsettedFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!subsettingFeatureSeen) + { + logger.LogDebug("the subsettingFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Subsetting dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var subsettedFeatureSeen = false; + var subsettingFeatureSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (subsettingFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.SubsettingFeature = Guid.Empty; - logger.LogDebug($"the Subsetting.SubsettingFeature property was not found in the Json. The value is set to Guid.Empty"); + throw new JsonException("Expected a property name in the Subsetting json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - if (subsettingFeatureProperty.TryGetProperty("@id"u8, out var subsettingFeatureExternalIdProperty)) - { - var propertyValue = subsettingFeatureExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.SubsettingFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Subsetting cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the subsettingFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.Subsetting dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subsettedFeature"u8, out var subsettedFeatureProperty)) - { - if (subsettedFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.SubsettedFeature = Guid.Empty; - logger.LogDebug($"the Subsetting.SubsettedFeature property was not found in the Json. The value is set to Guid.Empty"); + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("subsettedFeature"u8)) { - if (subsettedFeatureProperty.TryGetProperty("@id"u8, out var subsettedFeatureExternalIdProperty)) + subsettedFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subsettedFeatureExternalIdProperty.GetString(); + dtoInstance.SubsettedFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.SubsettedFeature = Guid.Parse(propertyValue); + logger.LogDebug("the Subsetting.SubsettedFeature property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the subsettedFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subsettedFeatureValue)) + { + dtoInstance.SubsettedFeature = subsettedFeatureValue; + } - if (jsonElement.TryGetProperty("subsettingFeature"u8, out var subsettingFeatureProperty)) - { - if (subsettingFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.SubsettingFeature = Guid.Empty; - logger.LogDebug($"the Subsetting.SubsettingFeature property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subsettingFeature"u8)) { - if (subsettingFeatureProperty.TryGetProperty("@id"u8, out var subsettingFeatureExternalIdProperty)) + subsettingFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subsettingFeatureExternalIdProperty.GetString(); + dtoInstance.SubsettingFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.SubsettingFeature = Guid.Parse(propertyValue); + logger.LogDebug("the Subsetting.SubsettingFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subsettingFeatureValue)) + { + dtoInstance.SubsettingFeature = subsettingFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the subsettingFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!subsettedFeatureSeen) + { + logger.LogDebug("the subsettedFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + if (!subsettingFeatureSeen) + { + logger.LogDebug("the subsettingFeature Json property was not found in the Subsetting: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionAsUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionAsUsageDeSerializer.cs index 761edbef5..8c827e344 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionAsUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionAsUsageDeSerializer.cs @@ -22,2600 +22,3087 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Connections; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SuccessionAsUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISuccessionAsUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Connections; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SuccessionAsUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISuccessionAsUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionAsUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionAsUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SuccessionAsUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SuccessionAsUsage") - { - throw new InvalidOperationException($"The SuccessionAsUsageDeSerializer can only be used to deserialize objects of type ISuccessionAsUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var associationSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var definitionSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SuccessionAsUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the SuccessionAsUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SuccessionAsUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("association"u8, out var associationProperty)) - { - foreach (var arrayItem in associationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var associationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = associationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.association.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the association Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("association"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + associationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.association.Add(associationValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("definition"u8, out var definitionProperty)) - { - foreach (var arrayItem in definitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var definitionExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = definitionExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("definition"u8)) + { + definitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var definitionValue)) { - dtoInstance.definition.Add(Guid.Parse(propertyValue)); + dtoInstance.definition.Add(definitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the definition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.endOwningType = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("feature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SuccessionAsUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SuccessionAsUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + sourceFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.sourceFeature = sourceFeatureValue; + } + + continue; + } + + if (reader.ValueTextEquals("targetFeature"u8)) + { + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("usage"u8)) { - dtoInstance.owningUsage = null; + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) + { + dtoInstance.usage.Add(usageValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); } - else + if (!associationSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the association Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!definitionSeen) + { + logger.LogDebug("the definition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); } - } - else + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the sourceFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SuccessionAsUsage json object."); + } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SuccessionAsUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Connections.SuccessionAsUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("isAbstract"u8)) { - var propertyValue = arrayItem.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType != JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.IsAbstract = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isComposite"u8)) + { + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + isConstantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } + isDerivedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionAsUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionDeSerializer.cs index 37c7aa128..b74e3b036 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionDeSerializer.cs @@ -22,1888 +22,2271 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Kernel.Connectors; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class SuccessionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ISuccession DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Kernel.Connectors; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class SuccessionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISuccession DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.Succession(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Succession dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SuccessionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Succession") - { - throw new InvalidOperationException($"The SuccessionDeSerializer can only be used to deserialize objects of type ISuccession, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Connectors.Succession(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + var aliasIdsSeen = false; + var associationSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var targetFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Succession json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Succession cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Succession cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Succession dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("association"u8)) { - var propertyValue = arrayItem.GetString(); + associationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("association"u8, out var associationProperty)) - { - foreach (var arrayItem in associationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var associationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = associationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var associationValue)) { - dtoInstance.association.Add(Guid.Parse(propertyValue)); + dtoInstance.association.Add(associationValue); } } + + continue; } - } - else - { - logger.LogDebug("the association Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.connectorEnd.Add(connectorEndValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + defaultFeaturingTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) + { + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Succession.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Succession.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the Succession: {Id}", dtoInstance.Id); } - else + if (!associationSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the association Json property was not found in the Succession: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!chainingFeatureSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); } - } - else + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Succession dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the targetFeature Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Succession json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Succession cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Connectors.Succession dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Succession: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isVariableSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Succession: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowDeSerializer.cs index 784cdf2be..0691b9064 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Kernel.Interactions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class SuccessionFlowDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class SuccessionFlowDeSerializer /// /// an instance of /// - internal static ISuccessionFlow DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISuccessionFlow DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionFlowDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SuccessionFlowDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SuccessionFlow") - { - throw new InvalidOperationException($"The SuccessionFlowDeSerializer can only be used to deserialize objects of type ISuccessionFlow, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Kernel.Interactions.SuccessionFlow(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SuccessionFlow cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,1916 +87,2314 @@ internal static ISuccessionFlow DeSerialize(JsonElement jsonElement, Serializati /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.SuccessionFlow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.SuccessionFlow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var interactionSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var payloadFeatureSeen = false; + var payloadTypeSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var sourceOutputFeatureSeen = false; + var targetFeatureSeen = false; + var targetInputFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SuccessionFlow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SuccessionFlow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("endOwningType"u8)) { - dtoInstance.endOwningType = null; + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("feature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the SuccessionFlow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SuccessionFlow.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("interaction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + interactionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var interactionValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.interaction.Add(interactionValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("interaction"u8, out var interactionProperty)) - { - foreach (var arrayItem in interactionProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var interactionExternalIdProperty)) - { - var propertyValue = interactionExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.interaction.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the interaction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + dtoInstance.owningType = owningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("payloadFeature"u8)) { - dtoInstance.owningNamespace = null; + payloadFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadFeatureValue)) + { + dtoInstance.payloadFeature = payloadFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("payloadType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadTypeValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.payloadType.Add(payloadTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("sourceOutputFeature"u8)) { - dtoInstance.owningType = null; + sourceOutputFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceOutputFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceOutputFeatureValue)) + { + dtoInstance.sourceOutputFeature = sourceOutputFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("targetFeature"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + targetFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.targetFeature.Add(targetFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("targetInputFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + targetInputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetInputFeature = null; } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("payloadFeature"u8, out var payloadFeatureProperty)) - { - if (payloadFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.payloadFeature = null; - } - else - { - if (payloadFeatureProperty.TryGetProperty("@id"u8, out var payloadFeatureExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetInputFeatureValue)) { - var propertyValue = payloadFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.payloadFeature = Guid.Parse(propertyValue); - } + dtoInstance.targetInputFeature = targetInputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadType"u8, out var payloadTypeProperty)) - { - foreach (var arrayItem in payloadTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var payloadTypeExternalIdProperty)) - { - var propertyValue = payloadTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.payloadType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the payloadType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) - { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.sourceFeature = null; + logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - else + if (!chainingFeatureSeen) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the chainingFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceOutputFeature"u8, out var sourceOutputFeatureProperty)) - { - if (sourceOutputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!connectorEndSeen) { - dtoInstance.sourceOutputFeature = null; + logger.LogDebug("the connectorEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - else + if (!crossFeatureSeen) { - if (sourceOutputFeatureProperty.TryGetProperty("@id"u8, out var sourceOutputFeatureExternalIdProperty)) - { - var propertyValue = sourceOutputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceOutputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the crossFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the sourceOutputFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (!declaredNameSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the declaredName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("targetInputFeature"u8, out var targetInputFeatureProperty)) - { - if (targetInputFeatureProperty.ValueKind == JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.targetInputFeature = null; + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - else + if (!defaultFeaturingTypeSeen) { - if (targetInputFeatureProperty.TryGetProperty("@id"u8, out var targetInputFeatureExternalIdProperty)) - { - var propertyValue = targetInputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.targetInputFeature = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the targetInputFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!differencingTypeSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the differencingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!interactionSeen) + { + logger.LogDebug("the interaction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!payloadFeatureSeen) + { + logger.LogDebug("the payloadFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!payloadTypeSeen) + { + logger.LogDebug("the payloadType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!sourceOutputFeatureSeen) + { + logger.LogDebug("the sourceOutputFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!targetInputFeatureSeen) + { + logger.LogDebug("the targetInputFeature Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the unioningType Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - } /// /// Deserializes properties of a - /// from a , excluding derived properties + /// from a , excluding derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.SuccessionFlow dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Kernel.Interactions.SuccessionFlow dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the SuccessionFlow json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SuccessionFlow cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariable"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) + { + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlow: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowUsageDeSerializer.cs index f85d4fb51..c15049dfb 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/SuccessionFlowUsageDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Flows; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class SuccessionFlowUsageDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class SuccessionFlowUsageDeSerializer /// /// an instance of /// - internal static ISuccessionFlowUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ISuccessionFlowUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("SuccessionFlowUsageDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the SuccessionFlowUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "SuccessionFlowUsage") - { - throw new InvalidOperationException($"The SuccessionFlowUsageDeSerializer can only be used to deserialize objects of type ISuccessionFlowUsage, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Flows.SuccessionFlowUsage(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the SuccessionFlowUsage cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,2674 +87,3195 @@ internal static ISuccessionFlowUsage DeSerialize(JsonElement jsonElement, Serial /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.SuccessionFlowUsage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.SuccessionFlowUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var connectorEndSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var defaultFeaturingTypeSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var flowDefinitionSeen = false; + var flowEndSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var payloadFeatureSeen = false; + var payloadTypeSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var relatedFeatureSeen = false; + var shortNameSeen = false; + var sourceFeatureSeen = false; + var sourceOutputFeatureSeen = false; + var targetFeatureSeen = false; + var targetInputFeatureSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the SuccessionFlowUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the SuccessionFlowUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("connectorEnd"u8, out var connectorEndProperty)) - { - foreach (var arrayItem in connectorEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var connectorEndExternalIdProperty)) - { - var propertyValue = connectorEndExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.connectorEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the connectorEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("connectorEnd"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + connectorEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var connectorEndValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.connectorEnd.Add(connectorEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("defaultFeaturingType"u8, out var defaultFeaturingTypeProperty)) - { - if (defaultFeaturingTypeProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.defaultFeaturingType = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (defaultFeaturingTypeProperty.TryGetProperty("@id"u8, out var defaultFeaturingTypeExternalIdProperty)) - { - var propertyValue = defaultFeaturingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.defaultFeaturingType = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("defaultFeaturingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + defaultFeaturingTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.defaultFeaturingType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var defaultFeaturingTypeValue)) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + dtoInstance.defaultFeaturingType = defaultFeaturingTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the SuccessionFlowUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the SuccessionFlowUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowDefinition"u8, out var flowDefinitionProperty)) - { - foreach (var arrayItem in flowDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowDefinitionExternalIdProperty)) - { - var propertyValue = flowDefinitionExternalIdProperty.GetString(); + flowDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowDefinitionValue)) { - dtoInstance.flowDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.flowDefinition.Add(flowDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("flowEnd"u8, out var flowEndProperty)) - { - foreach (var arrayItem in flowEndProperty.EnumerateArray()) + if (reader.ValueTextEquals("flowEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var flowEndExternalIdProperty)) - { - var propertyValue = flowEndExternalIdProperty.GetString(); + flowEndSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var flowEndValue)) { - dtoInstance.flowEnd.Add(Guid.Parse(propertyValue)); + dtoInstance.flowEnd.Add(flowEndValue); } } + + continue; } - } - else - { - logger.LogDebug("the flowEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("multiplicity"u8)) + { + multiplicitySeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; + } + + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.multiplicity = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.nestedAction.Add(nestedActionValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningDefinition = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; - } - else + if (reader.ValueTextEquals("payloadFeature"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + payloadFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.payloadFeature = null; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; - } - else - { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadFeatureValue)) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + dtoInstance.payloadFeature = payloadFeatureValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("payloadType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + payloadTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; - } - else - { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = owningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var payloadTypeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.payloadType.Add(payloadTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("relatedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + relatedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedFeatureValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.relatedFeature.Add(relatedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadFeature"u8, out var payloadFeatureProperty)) - { - if (payloadFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.payloadFeature = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("sourceFeature"u8)) { - if (payloadFeatureProperty.TryGetProperty("@id"u8, out var payloadFeatureExternalIdProperty)) - { - var propertyValue = payloadFeatureExternalIdProperty.GetString(); + sourceFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.payloadFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceFeatureValue)) + { + dtoInstance.sourceFeature = sourceFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("payloadType"u8, out var payloadTypeProperty)) - { - foreach (var arrayItem in payloadTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("sourceOutputFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var payloadTypeExternalIdProperty)) - { - var propertyValue = payloadTypeExternalIdProperty.GetString(); + sourceOutputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.payloadType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.sourceOutputFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceOutputFeatureValue)) + { + dtoInstance.sourceOutputFeature = sourceOutputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the payloadType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("targetFeature"u8)) + { + targetFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("relatedFeature"u8, out var relatedFeatureProperty)) - { - foreach (var arrayItem in relatedFeatureProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var relatedFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = relatedFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetFeatureValue)) { - dtoInstance.relatedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.targetFeature.Add(targetFeatureValue); } } - } - } - else - { - logger.LogDebug("the relatedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("sourceFeature"u8, out var sourceFeatureProperty)) - { - if (sourceFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceFeature = null; + continue; } - else + + if (reader.ValueTextEquals("targetInputFeature"u8)) { - if (sourceFeatureProperty.TryGetProperty("@id"u8, out var sourceFeatureExternalIdProperty)) - { - var propertyValue = sourceFeatureExternalIdProperty.GetString(); + targetInputFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.sourceFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.targetInputFeature = null; } - } - } - else - { - logger.LogDebug("the sourceFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("sourceOutputFeature"u8, out var sourceOutputFeatureProperty)) - { - if (sourceOutputFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.sourceOutputFeature = null; - } - else - { - if (sourceOutputFeatureProperty.TryGetProperty("@id"u8, out var sourceOutputFeatureExternalIdProperty)) + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetInputFeatureValue)) { - var propertyValue = sourceOutputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.sourceOutputFeature = Guid.Parse(propertyValue); - } + dtoInstance.targetInputFeature = targetInputFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the sourceOutputFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("targetFeature"u8, out var targetFeatureProperty)) - { - foreach (var arrayItem in targetFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var targetFeatureExternalIdProperty)) - { - var propertyValue = targetFeatureExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.targetFeature.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the targetFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("targetInputFeature"u8, out var targetInputFeatureProperty)) - { - if (targetInputFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.targetInputFeature = null; - } - else - { - if (targetInputFeatureProperty.TryGetProperty("@id"u8, out var targetInputFeatureExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = targetInputFeatureExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.targetInputFeature = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the targetInputFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } - } - } - } - else - { - logger.LogDebug("the usage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.SuccessionFlowUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!connectorEndSeen) + { + logger.LogDebug("the connectorEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!defaultFeaturingTypeSeen) + { + logger.LogDebug("the defaultFeaturingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!flowDefinitionSeen) + { + logger.LogDebug("the flowDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!flowEndSeen) + { + logger.LogDebug("the flowEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!payloadFeatureSeen) + { + logger.LogDebug("the payloadFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!payloadTypeSeen) + { + logger.LogDebug("the payloadType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!relatedFeatureSeen) + { + logger.LogDebug("the relatedFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!sourceFeatureSeen) + { + logger.LogDebug("the sourceFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!sourceOutputFeatureSeen) + { + logger.LogDebug("the sourceOutputFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!targetFeatureSeen) + { + logger.LogDebug("the targetFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!targetInputFeatureSeen) + { + logger.LogDebug("the targetInputFeature Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Flows.SuccessionFlowUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + throw new JsonException("Expected a property name in the SuccessionFlowUsage json object."); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the SuccessionFlowUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsIndividual = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.OwningRelatedElement = null; + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isSufficient"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.OwningRelationship = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) + { + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); + if (reader.ValueTextEquals("owningRelatedElement"u8)) + { + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; + } + + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); } - else + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the portionKind Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the SuccessionFlowUsage: {Id}", dtoInstance.Id); + } } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TerminateActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TerminateActionUsageDeSerializer.cs index bda12c276..faf4489aa 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TerminateActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TerminateActionUsageDeSerializer.cs @@ -33,6 +33,7 @@ namespace SysML2.NET.Serializer.Json.Core.DTO using SysML2.NET.Common; using SysML2.NET.Core.DTO.Systems.Actions; using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; /// /// The purpose of the is to provide deserialization capabilities @@ -41,10 +42,12 @@ namespace SysML2.NET.Serializer.Json.Core.DTO internal static class TerminateActionUsageDeSerializer { /// - /// Deserializes an instance of from the provided + /// Deserializes an instance of from the provided /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// /// /// /// enumeration specifying what kind of serialization shall be used @@ -58,43 +61,25 @@ internal static class TerminateActionUsageDeSerializer /// /// an instance of /// - internal static ITerminateActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITerminateActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) { var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TerminateActionUsageDeSerializer"); - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TerminateActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "TerminateActionUsage") - { - throw new InvalidOperationException($"The TerminateActionUsageDeSerializer can only be used to deserialize objects of type ITerminateActionUsage, a {@type.GetString()} was provided"); - } + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.TerminateActionUsage(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TerminateActionUsage cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); - } - } - if (deserializeDerivedProperties) { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); } else { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); } return dtoInstance; @@ -102,2386 +87,2889 @@ internal static ITerminateActionUsage DeSerialize(JsonElement jsonElement, Seria /// /// Deserializes properties of a - /// from a , including derived properties + /// from a , including derived properties /// /// /// The instance holding deserialized values /// - /// - /// The that contains the json object + /// + /// The positioned on the of the + /// json object /// /// /// The to produce logging statement /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TerminateActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TerminateActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var terminatedOccurrenceArgumentSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); - } - } + throw new JsonException("Expected a property name in the TerminateActionUsage json object."); } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the TerminateActionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("chainingFeature"u8)) + { + chainingFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) + crossFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) { - var propertyValue = directedUsageExternalIdProperty.GetString(); + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the TerminateActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the TerminateActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + isConjugatedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningNamespace = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("terminatedOccurrenceArgument"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + terminatedOccurrenceArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.terminatedOccurrenceArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var terminatedOccurrenceArgumentValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.terminatedOccurrenceArgument = terminatedOccurrenceArgumentValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("textualRepresentation"u8)) + { + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) + if (reader.ValueTextEquals("usage"u8)) + { + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) + { + dtoInstance.usage.Add(usageValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("variant"u8)) + { + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) + { + dtoInstance.variant.Add(variantValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("variantMembership"u8)) + { + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!actionDefinitionSeen) + { + logger.LogDebug("the actionDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!terminatedOccurrenceArgumentSeen) + { + logger.LogDebug("the terminatedOccurrenceArgument Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TerminateActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TerminateActionUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TerminateActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.owningUsage = null; + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isComposite"u8)) + { + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isConstant"u8)) + { + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isDerived"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + isDerivedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("isEnd"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + isEndSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("terminatedOccurrenceArgument"u8, out var terminatedOccurrenceArgumentProperty)) - { - if (terminatedOccurrenceArgumentProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.terminatedOccurrenceArgument = null; + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isOrdered"u8)) { - if (terminatedOccurrenceArgumentProperty.TryGetProperty("@id"u8, out var terminatedOccurrenceArgumentExternalIdProperty)) - { - var propertyValue = terminatedOccurrenceArgumentExternalIdProperty.GetString(); + isOrderedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.terminatedOccurrenceArgument = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the terminatedOccurrenceArgument Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + isPortionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - } + continue; + } - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TerminateActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningRelationship"u8)) { - var propertyValue = arrayItem.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; - } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + reader.Read(); + reader.Skip(); } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) + if (logger.IsEnabled(LogLevel.Debug)) { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the aliasIds Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the declaredShortName Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!directionSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the direction Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!elementIdSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the elementId Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!isAbstractSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the isAbstract Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (!isCompositeSeen) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + logger.LogDebug("the isComposite Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!isConstantSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the isConstant Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (!isDerivedSeen) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + logger.LogDebug("the isDerived Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (!isEndSeen) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + logger.LogDebug("the isEnd Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (!isImpliedIncludedSeen) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + logger.LogDebug("the isImpliedIncluded Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (!isIndividualSeen) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + logger.LogDebug("the isIndividual Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (!isOrderedSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the isOrdered Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!isPortionSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the isPortion Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } - else + if (!isSufficientSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the isSufficient Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); } } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the TerminateActionUsage: {Id}", dtoInstance.Id); - } - } } } diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs index 0ba7a5aa0..64d934b25 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TextualRepresentationDeSerializer.cs @@ -22,666 +22,837 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Root.Annotations; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TextualRepresentationDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ITextualRepresentation DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Root.Annotations; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TextualRepresentationDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITextualRepresentation DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TextualRepresentationDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TextualRepresentationDeSerializer"); + var aliasIdsSeen = false; + var annotationSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var languageSeen = false; + var nameSeen = false; + var ownedAnnotatingRelationshipSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningAnnotatingRelationshipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var representedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TextualRepresentation json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TextualRepresentationDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "TextualRepresentation") - { - throw new InvalidOperationException($"The TextualRepresentationDeSerializer can only be used to deserialize objects of type ITextualRepresentation, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("annotation"u8)) { - var propertyValue = arrayItem.GetString(); + annotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var annotationValue)) + { + dtoInstance.annotation.Add(annotationValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("annotation"u8, out var annotationProperty)) - { - foreach (var arrayItem in annotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("body"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var annotationExternalIdProperty)) - { - var propertyValue = annotationExternalIdProperty.GetString(); + bodySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.annotation.Add(Guid.Parse(propertyValue)); - } + var bodyValue = reader.GetString(); + + if (bodyValue != null) + { + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the annotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + isLibraryElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("language"u8, out var languageProperty)) - { - var propertyValue = languageProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("language"u8)) { - dtoInstance.Language = propertyValue; + languageSeen = true; + reader.Read(); + + var languageValue = reader.GetString(); + + if (languageValue != null) + { + dtoInstance.Language = languageValue; + } + + continue; } - } - else - { - logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotatingRelationship"u8, out var ownedAnnotatingRelationshipProperty)) - { - foreach (var arrayItem in ownedAnnotatingRelationshipProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotatingRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = ownedAnnotatingRelationshipExternalIdProperty.GetString(); + ownedAnnotatingRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotatingRelationshipValue)) { - dtoInstance.ownedAnnotatingRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotatingRelationship.Add(ownedAnnotatingRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningAnnotatingRelationship"u8, out var owningAnnotatingRelationshipProperty)) - { - if (owningAnnotatingRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningAnnotatingRelationship"u8)) { - dtoInstance.owningAnnotatingRelationship = null; + owningAnnotatingRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningAnnotatingRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningAnnotatingRelationshipValue)) + { + dtoInstance.owningAnnotatingRelationship = owningAnnotatingRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningAnnotatingRelationshipProperty.TryGetProperty("@id"u8, out var owningAnnotatingRelationshipExternalIdProperty)) - { - var propertyValue = owningAnnotatingRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningAnnotatingRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("representedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + representedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.representedElement = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the TextualRepresentation.representedElement property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var representedElementValue)) + { + dtoInstance.representedElement = representedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("representedElement"u8, out var representedElementProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (representedElementProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.representedElement = Guid.Empty; - logger.LogDebug($"the TextualRepresentation.representedElement property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); } - else + if (!annotationSeen) { - if (representedElementProperty.TryGetProperty("@id"u8, out var representedElementExternalIdProperty)) - { - var propertyValue = representedElementExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.representedElement = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the annotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!languageSeen) + { + logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotatingRelationshipSeen) + { + logger.LogDebug("the ownedAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningAnnotatingRelationshipSeen) + { + logger.LogDebug("the owningAnnotatingRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); } - } - else + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!representedElementSeen) + { + logger.LogDebug("the representedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var bodySeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedIncludedSeen = false; + var languageSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the representedElement Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TextualRepresentation json object."); + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TextualRepresentation cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Root.Annotations.TextualRepresentation dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("body"u8)) { - var propertyValue = arrayItem.GetString(); + bodySeen = true; + reader.Read(); + + var bodyValue = reader.GetString(); - if (propertyValue != null) + if (bodyValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.Body = bodyValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("body"u8, out var bodyProperty)) - { - var propertyValue = bodyProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Body = propertyValue; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } + isImpliedIncludedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("language"u8, out var languageProperty)) - { - var propertyValue = languageProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.Language = propertyValue; + continue; } - } - else - { - logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("language"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + languageSeen = true; + reader.Read(); + + var languageValue = reader.GetString(); + + if (languageValue != null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.Language = languageValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!bodySeen) + { + logger.LogDebug("the body Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!languageSeen) + { + logger.LogDebug("the language Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TextualRepresentation: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionFeatureMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionFeatureMembershipDeSerializer.cs index da28c1801..62cc4df99 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionFeatureMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionFeatureMembershipDeSerializer.cs @@ -22,771 +22,975 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TransitionFeatureMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ITransitionFeatureMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TransitionFeatureMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITransitionFeatureMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TransitionFeatureMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TransitionFeatureMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var kindSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var transitionFeatureSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TransitionFeatureMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TransitionFeatureMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TransitionFeatureMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "TransitionFeatureMembership") - { - throw new InvalidOperationException($"The TransitionFeatureMembershipDeSerializer can only be used to deserialize objects of type ITransitionFeatureMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TransitionFeatureMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = TransitionFeatureKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = TransitionFeatureKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.name = reader.GetString(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionFeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the TransitionFeatureMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("transitionFeature"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + transitionFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.transitionFeature = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionFeatureMembership.transitionFeature property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var transitionFeatureValue)) + { + dtoInstance.transitionFeature = transitionFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!transitionFeatureSeen) + { + logger.LogDebug("the transitionFeature Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var kindSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TransitionFeatureMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TransitionFeatureMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("transitionFeature"u8, out var transitionFeatureProperty)) - { - if (transitionFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.transitionFeature = Guid.Empty; - logger.LogDebug($"the TransitionFeatureMembership.transitionFeature property was not found in the Json. The value is set to Guid.Empty"); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (transitionFeatureProperty.TryGetProperty("@id"u8, out var transitionFeatureExternalIdProperty)) - { - var propertyValue = transitionFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.transitionFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the transitionFeature Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionFeatureMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - var propertyValue = arrayItem.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isImplied"u8)) + { + isImpliedSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.ElementId = propertyValue; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = TransitionFeatureKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + ownedRelatedElementSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = TransitionFeatureKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the TransitionFeatureMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionUsageDeSerializer.cs index a176d0537..b6fb49bdd 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TransitionUsageDeSerializer.cs @@ -22,2581 +22,3086 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.States; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TransitionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ITransitionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.States; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TransitionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITransitionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TransitionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.TransitionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TransitionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TransitionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "TransitionUsage") - { - throw new InvalidOperationException($"The TransitionUsageDeSerializer can only be used to deserialize objects of type ITransitionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.States.TransitionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var effectActionSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var guardExpressionSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var sourceSeen = false; + var successionSeen = false; + var targetSeen = false; + var textualRepresentationSeen = false; + var triggerActionSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the TransitionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the TransitionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TransitionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("crossFeature"u8)) { - dtoInstance.crossFeature = null; + crossFeatureSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("effectAction"u8, out var effectActionProperty)) - { - foreach (var arrayItem in effectActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("effectAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var effectActionExternalIdProperty)) - { - var propertyValue = effectActionExternalIdProperty.GetString(); + effectActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var effectActionValue)) { - dtoInstance.effectAction.Add(Guid.Parse(propertyValue)); + dtoInstance.effectAction.Add(effectActionValue); } } - } - } - else - { - logger.LogDebug("the effectAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the TransitionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("guardExpression"u8, out var guardExpressionProperty)) - { - foreach (var arrayItem in guardExpressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("guardExpression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var guardExpressionExternalIdProperty)) - { - var propertyValue = guardExpressionExternalIdProperty.GetString(); + guardExpressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var guardExpressionValue)) { - dtoInstance.guardExpression.Add(Guid.Parse(propertyValue)); + dtoInstance.guardExpression.Add(guardExpressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the guardExpression Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + individualDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningDefinition"u8)) { - dtoInstance.owner = null; + owningDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningNamespace = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("source"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + sourceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.source = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionUsage.source property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var sourceValue)) + { + dtoInstance.source = sourceValue; + } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("succession"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) + successionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningTypeExternalIdProperty.GetString(); + dtoInstance.succession = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionUsage.succession property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var successionValue)) + { + dtoInstance.succession = successionValue; + } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("target"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) + targetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningUsageExternalIdProperty.GetString(); + dtoInstance.target = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + logger.LogDebug("the TransitionUsage.target property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var targetValue)) + { + dtoInstance.target = targetValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("triggerAction"u8)) + { + triggerActionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("source"u8, out var sourceProperty)) - { - if (sourceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.source = Guid.Empty; - logger.LogDebug($"the TransitionUsage.source property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (sourceProperty.TryGetProperty("@id"u8, out var sourceExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = sourceExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var triggerActionValue)) { - dtoInstance.source = Guid.Parse(propertyValue); + dtoInstance.triggerAction.Add(triggerActionValue); } } - } - } - else - { - logger.LogDebug("the source Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("succession"u8, out var successionProperty)) - { - if (successionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.succession = Guid.Empty; - logger.LogDebug($"the TransitionUsage.succession property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (successionProperty.TryGetProperty("@id"u8, out var successionExternalIdProperty)) - { - var propertyValue = successionExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.succession = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } - } - } - else - { - logger.LogDebug("the succession Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("target"u8, out var targetProperty)) - { - if (targetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.target = Guid.Empty; - logger.LogDebug($"the TransitionUsage.target property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("usage"u8)) { - if (targetProperty.TryGetProperty("@id"u8, out var targetExternalIdProperty)) - { - var propertyValue = targetExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.target = Guid.Parse(propertyValue); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the target Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("triggerAction"u8, out var triggerActionProperty)) - { - foreach (var arrayItem in triggerActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var triggerActionExternalIdProperty)) - { - var propertyValue = triggerActionExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.triggerAction.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the triggerAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (!actionDefinitionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actionDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!effectActionSeen) + { + logger.LogDebug("the effectAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!guardExpressionSeen) + { + logger.LogDebug("the guardExpression Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); } - } - else + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!sourceSeen) + { + logger.LogDebug("the source Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!successionSeen) + { + logger.LogDebug("the succession Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!targetSeen) + { + logger.LogDebug("the target Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!triggerActionSeen) + { + logger.LogDebug("the triggerAction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the unioningType Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TransitionUsage json object."); + } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TransitionUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = variantExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.States.TransitionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the TransitionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TriggerInvocationExpressionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TriggerInvocationExpressionDeSerializer.cs index 4938f0028..984c32aff 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TriggerInvocationExpressionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TriggerInvocationExpressionDeSerializer.cs @@ -22,1812 +22,2202 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TriggerInvocationExpressionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ITriggerInvocationExpression DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TriggerInvocationExpressionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITriggerInvocationExpression DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TriggerInvocationExpressionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TriggerInvocationExpressionDeSerializer"); + var aliasIdsSeen = false; + var argumentSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var functionSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var instantiatedTypeSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var kindSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TriggerInvocationExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TriggerInvocationExpression cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TriggerInvocationExpressionDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "TriggerInvocationExpression") - { - throw new InvalidOperationException($"The TriggerInvocationExpressionDeSerializer can only be used to deserialize objects of type ITriggerInvocationExpression, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TriggerInvocationExpression cannot be deserialized"); - } - else - { - dtoInstance.Id = Guid.Parse(propertyValue); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("argument"u8)) { - var propertyValue = arrayItem.GetString(); + argumentSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var argumentValue)) + { + dtoInstance.argument.Add(argumentValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("argument"u8, out var argumentProperty)) - { - foreach (var arrayItem in argumentProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var argumentExternalIdProperty)) - { - var propertyValue = argumentExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.argument.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the argument Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the TriggerInvocationExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the TriggerInvocationExpression.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("function"u8, out var functionProperty)) - { - if (functionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("function"u8)) { - dtoInstance.function = null; + functionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.function = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var functionValue)) + { + dtoInstance.function = functionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (functionProperty.TryGetProperty("@id"u8, out var functionExternalIdProperty)) - { - var propertyValue = functionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.function = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the function Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("instantiatedType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) + instantiatedTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inputExternalIdProperty.GetString(); + dtoInstance.instantiatedType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the TriggerInvocationExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the input Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var instantiatedTypeValue)) + { + dtoInstance.instantiatedType = instantiatedTypeValue; + } - if (jsonElement.TryGetProperty("instantiatedType"u8, out var instantiatedTypeProperty)) - { - if (instantiatedTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.instantiatedType = Guid.Empty; - logger.LogDebug($"the TriggerInvocationExpression.instantiatedType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("intersectingType"u8)) { - if (instantiatedTypeProperty.TryGetProperty("@id"u8, out var instantiatedTypeExternalIdProperty)) - { - var propertyValue = instantiatedTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.instantiatedType = Guid.Parse(propertyValue); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the instantiatedType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); + kindSeen = true; + reader.Read(); + + dtoInstance.Kind = TriggerKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = TriggerKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.output.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - dtoInstance.ownedReferenceSubsetting = null; + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owner = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningFeatureMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningMembership = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the TriggerInvocationExpression.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) + { + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("type"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + typeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.type.Add(typeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!argumentSeen) + { + logger.LogDebug("the argument Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!functionSeen) + { + logger.LogDebug("the function Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!instantiatedTypeSeen) + { + logger.LogDebug("the instantiatedType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!resultSeen) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the TriggerInvocationExpression.result property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the result Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); } - else + if (!shortNameSeen) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + logger.LogDebug("the shortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!typeSeen) + { + logger.LogDebug("the type Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariableSeen = false; + var kindSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TriggerInvocationExpression json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.result = Guid.Parse(propertyValue); - } + throw new JsonException("The @id property is not present, the TriggerInvocationExpression cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the result Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("type"u8, out var typeProperty)) - { - foreach (var arrayItem in typeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var typeExternalIdProperty)) - { - var propertyValue = typeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.type.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the type Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.TriggerInvocationExpression dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("direction"u8)) { - var propertyValue = arrayItem.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + var elementIdValue = reader.GetString(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.ElementId = propertyValue; + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariable"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isVariableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariable"u8, out var isVariableProperty)) - { - if (isVariableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("kind"u8)) { - dtoInstance.IsVariable = isVariableProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + kindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("kind"u8, out var kindProperty)) - { - dtoInstance.Kind = TriggerKindDeSerializer.Deserialize(kindProperty.GetString()); - } - else - { - logger.LogDebug("the kind Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } + dtoInstance.Kind = TriggerKindDeSerializer.Deserialize(reader.GetString()); - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!isVariableSeen) + { + logger.LogDebug("the isVariable Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!kindSeen) + { + logger.LogDebug("the kind Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TriggerInvocationExpression: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeDeSerializer.cs index 69f57b9c5..d2b199f09 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeDeSerializer.cs @@ -22,1129 +22,1371 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TypeDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IType DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TypeDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IType DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TypeDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Type(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Type dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TypeDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TypeDeSerializer cannot be used to deserialize this JsonElement"); - } + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Type json object."); + } - if (@type.GetString() != "Type") - { - throw new InvalidOperationException($"The TypeDeSerializer can only be used to deserialize objects of type IType, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Type(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Type cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the Type cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Type dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Type: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Type: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Type: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningNamespace = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Type: {Id}", dtoInstance.Id); - } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Type: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Type dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isSufficientSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Type json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Type cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Type: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Type dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Type: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Type: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Type: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeFeaturingDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeFeaturingDeSerializer.cs index afce5d1eb..a96e848cb 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeFeaturingDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/TypeFeaturingDeSerializer.cs @@ -22,777 +22,941 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Features; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class TypeFeaturingDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static ITypeFeaturing DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Features; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class TypeFeaturingDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static ITypeFeaturing DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TypeFeaturingDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.TypeFeaturing(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.TypeFeaturing dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("TypeFeaturingDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var featureOfTypeSeen = false; + var featuringTypeSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningFeatureOfTypeSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TypeFeaturing json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TypeFeaturing cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the TypeFeaturingDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "TypeFeaturing") - { - throw new InvalidOperationException($"The TypeFeaturingDeSerializer can only be used to deserialize objects of type ITypeFeaturing, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Features.TypeFeaturing(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the TypeFeaturing cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.TypeFeaturing dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureOfType"u8, out var featureOfTypeProperty)) - { - if (featureOfTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.FeatureOfType = Guid.Empty; - logger.LogDebug($"the TypeFeaturing.FeatureOfType property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("featureOfType"u8)) { - if (featureOfTypeProperty.TryGetProperty("@id"u8, out var featureOfTypeExternalIdProperty)) + featureOfTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureOfTypeExternalIdProperty.GetString(); + dtoInstance.FeatureOfType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeatureOfType = Guid.Parse(propertyValue); + logger.LogDebug("the TypeFeaturing.FeatureOfType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureOfTypeValue)) + { + dtoInstance.FeatureOfType = featureOfTypeValue; + } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - if (featuringTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.FeaturingType = Guid.Empty; - logger.LogDebug($"the TypeFeaturing.FeaturingType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featuringTypeProperty.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featuringTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.FeaturingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeaturingType = Guid.Parse(propertyValue); + logger.LogDebug("the TypeFeaturing.FeaturingType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) + { + dtoInstance.FeaturingType = featuringTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningFeatureOfType"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureOfTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureOfType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureOfTypeValue)) + { + dtoInstance.owningFeatureOfType = owningFeatureOfTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureOfType"u8, out var owningFeatureOfTypeProperty)) - { - if (owningFeatureOfTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningFeatureOfType = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningFeatureOfTypeProperty.TryGetProperty("@id"u8, out var owningFeatureOfTypeExternalIdProperty)) - { - var propertyValue = owningFeatureOfTypeExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureOfType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningMembership = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelatedElement = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.OwningRelationship = null; + logger.LogDebug("the aliasIds Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!featureOfTypeSeen) + { + logger.LogDebug("the featureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningFeatureOfTypeSeen) + { + logger.LogDebug("the owningFeatureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.TypeFeaturing dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var featureOfTypeSeen = false; + var featuringTypeSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the qualifiedName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the TypeFeaturing json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the TypeFeaturing cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Features.TypeFeaturing dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) - { - var propertyValue = arrayItem.GetString(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureOfType"u8, out var featureOfTypeProperty)) - { - if (featureOfTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.FeatureOfType = Guid.Empty; - logger.LogDebug($"the TypeFeaturing.FeatureOfType property was not found in the Json. The value is set to Guid.Empty"); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("featureOfType"u8)) { - if (featureOfTypeProperty.TryGetProperty("@id"u8, out var featureOfTypeExternalIdProperty)) + featureOfTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureOfTypeExternalIdProperty.GetString(); + dtoInstance.FeatureOfType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeatureOfType = Guid.Parse(propertyValue); + logger.LogDebug("the TypeFeaturing.FeatureOfType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureOfTypeValue)) + { + dtoInstance.FeatureOfType = featureOfTypeValue; + } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - if (featuringTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.FeaturingType = Guid.Empty; - logger.LogDebug($"the TypeFeaturing.FeaturingType property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featuringType"u8)) { - if (featuringTypeProperty.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featuringTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.FeaturingType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.FeaturingType = Guid.Parse(propertyValue); + logger.LogDebug("the TypeFeaturing.FeaturingType property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) + { + dtoInstance.FeaturingType = featuringTypeValue; + } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!featureOfTypeSeen) + { + logger.LogDebug("the featureOfType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the TypeFeaturing: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UnioningDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UnioningDeSerializer.cs index be771e484..130544b9a 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UnioningDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UnioningDeSerializer.cs @@ -22,728 +22,892 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Core.Types; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class UnioningDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IUnioning DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Core.Types; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class UnioningDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IUnioning DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UnioningDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Unioning(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Unioning dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UnioningDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var typeUnionedSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Unioning json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Unioning cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the UnioningDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "Unioning") - { - throw new InvalidOperationException($"The UnioningDeSerializer can only be used to deserialize objects of type IUnioning, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Core.Types.Unioning(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Unioning cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Unioning dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("typeUnioned"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) + typeUnionedSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = relatedElementExternalIdProperty.GetString(); + dtoInstance.typeUnioned = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Unioning.typeUnioned property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var typeUnionedValue)) + { + dtoInstance.typeUnioned = typeUnionedValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + unioningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + dtoInstance.UnioningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the Unioning.UnioningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.UnioningType = unioningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("typeUnioned"u8, out var typeUnionedProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (typeUnionedProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.typeUnioned = Guid.Empty; - logger.LogDebug($"the Unioning.typeUnioned property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the Unioning: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (typeUnionedProperty.TryGetProperty("@id"u8, out var typeUnionedExternalIdProperty)) - { - var propertyValue = typeUnionedExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.typeUnioned = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the Unioning: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the typeUnioned Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - if (unioningTypeProperty.ValueKind == JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.UnioningType = Guid.Empty; - logger.LogDebug($"the Unioning.UnioningType property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the declaredShortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); } - else + if (!documentationSeen) { - if (unioningTypeProperty.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.UnioningType = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the documentation Json property was not found in the Unioning: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Unioning dtoInstance, JsonElement jsonElement, ILogger logger) + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!typeUnionedSeen) + { + logger.LogDebug("the typeUnioned Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Core.Types.Unioning dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var unioningTypeSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Unioning json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Unioning cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImplied"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isImpliedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.OwningRelatedElement = null; + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - if (unioningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.UnioningType = Guid.Empty; - logger.LogDebug($"the Unioning.UnioningType property was not found in the Json. The value is set to Guid.Empty"); + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (unioningTypeProperty.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("unioningType"u8)) + { + unioningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.UnioningType = Guid.Empty; + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.UnioningType = Guid.Parse(propertyValue); + logger.LogDebug("the Unioning.UnioningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.UnioningType = unioningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Unioning: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Unioning: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UsageDeSerializer.cs index 11df844c1..373fe6f42 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UsageDeSerializer.cs @@ -22,2380 +22,2848 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class UsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class UsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the UsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "Usage") - { - throw new InvalidOperationException($"The UsageDeSerializer can only be used to deserialize objects of type IUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var definitionSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the Usage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("definition"u8, out var definitionProperty)) - { - foreach (var arrayItem in definitionProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var definitionExternalIdProperty)) - { - var propertyValue = definitionExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.definition.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the definition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("definition"u8)) + { + definitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var definitionValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.definition.Add(definitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the Usage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the Usage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } - } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + isAbstractSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isSufficient"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isSufficientSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isUnique"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + isUniqueSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the membership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.multiplicity = null; + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; + } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("nestedView"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.nestedView.Add(nestedViewValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningNamespace = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("qualifiedName"u8)) + { + qualifiedNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + dtoInstance.qualifiedName = reader.GetString(); - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("variantMembership"u8)) { - var propertyValue = arrayItem.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) + { + dtoInstance.variantMembership.Add(variantMembershipValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - var propertyValue = elementIdProperty.GetString(); - - if (propertyValue != null) + if (!aliasIdsSeen) { - dtoInstance.ElementId = propertyValue; + logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (!chainingFeatureSeen) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + logger.LogDebug("the chainingFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (!crossFeatureSeen) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + logger.LogDebug("the crossFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (!declaredNameSeen) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (!declaredShortNameSeen) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (!definitionSeen) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + logger.LogDebug("the definition Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (!differencingTypeSeen) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + logger.LogDebug("the differencingType Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (!directedFeatureSeen) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + logger.LogDebug("the directedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); } - } - else + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.Usage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the Usage json object."); + } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the Usage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("aliasIds"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.ElementId = elementIdValue; + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isAbstract"u8)) + { + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.OwningRelationship = null; + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isConstant"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isDerived"u8)) + { + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsDerived = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("isEnd"u8)) + { + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isImpliedIncluded"u8)) + { + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isOrdered"u8)) + { + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isPortion"u8)) + { + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isUnique"u8)) + { + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("isVariation"u8)) + { + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the Usage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseDefinitionDeSerializer.cs index c29eeb1d9..ed220a421 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseDefinitionDeSerializer.cs @@ -22,2023 +22,2411 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.UseCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class UseCaseDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IUseCaseDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.UseCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class UseCaseDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IUseCaseDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UseCaseDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UseCaseDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the UseCaseDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "UseCaseDefinition") - { - throw new InvalidOperationException($"The UseCaseDefinitionDeSerializer can only be used to deserialize objects of type IUseCaseDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var actorParameterSeen = false; + var aliasIdsSeen = false; + var calculationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var includedUseCaseSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the UseCaseDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the UseCaseDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the UseCaseDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculation"u8, out var calculationProperty)) - { - foreach (var arrayItem in calculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var calculationExternalIdProperty)) - { - var propertyValue = calculationExternalIdProperty.GetString(); + calculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationValue)) { - dtoInstance.calculation.Add(Guid.Parse(propertyValue)); + dtoInstance.calculation.Add(calculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("includedUseCase"u8, out var includedUseCaseProperty)) - { - foreach (var arrayItem in includedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("includedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var includedUseCaseExternalIdProperty)) - { - var propertyValue = includedUseCaseExternalIdProperty.GetString(); + includedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var includedUseCaseValue)) { - dtoInstance.includedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.includedUseCase.Add(includedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the includedUseCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.objectiveRequirement = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; + } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the UseCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the UseCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the UseCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the UseCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the variantMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionSeen) + { + logger.LogDebug("the action Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!calculationSeen) + { + logger.LogDebug("the calculation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!includedUseCaseSeen) + { + logger.LogDebug("the includedUseCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the UseCaseDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the UseCaseDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the UseCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseUsageDeSerializer.cs index a11a7132c..4a89d05b6 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/UseCaseUsageDeSerializer.cs @@ -22,2576 +22,3075 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.UseCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class UseCaseUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IUseCaseUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.UseCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class UseCaseUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IUseCaseUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UseCaseUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("UseCaseUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the UseCaseUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "UseCaseUsage") - { - throw new InvalidOperationException($"The UseCaseUsageDeSerializer can only be used to deserialize objects of type IUseCaseUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var includedUseCaseSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var useCaseDefinitionSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the UseCaseUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the UseCaseUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the UseCaseUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the UseCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the UseCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("includedUseCase"u8, out var includedUseCaseProperty)) - { - foreach (var arrayItem in includedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var includedUseCaseExternalIdProperty)) - { - var propertyValue = includedUseCaseExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.includedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } - } - } - else - { - logger.LogDebug("the includedUseCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("includedUseCase"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + includedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var includedUseCaseValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.includedUseCase.Add(includedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - dtoInstance.objectiveRequirement = null; + objectiveRequirementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedConjugator = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - dtoInstance.ownedCrossSubsetting = null; - } - else - { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningDefinition = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningFeatureMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.owningMembership = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the UseCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + logger.LogDebug("the UseCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningType = null; + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningUsage = null; + continue; } - else + + if (reader.ValueTextEquals("unioningType"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("useCaseDefinition"u8)) + { + useCaseDefinitionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.useCaseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var useCaseDefinitionValue)) + { + dtoInstance.useCaseDefinition = useCaseDefinitionValue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the UseCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("variant"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("variantMembership"u8)) { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the UseCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); - } - else - { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actorParameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!includedUseCaseSeen) + { + logger.LogDebug("the includedUseCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); } - } - else + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!useCaseDefinitionSeen) + { + logger.LogDebug("the useCaseDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the textualRepresentation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the UseCaseUsage json object."); + } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the UseCaseUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = usageExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("useCaseDefinition"u8, out var useCaseDefinitionProperty)) - { - if (useCaseDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.useCaseDefinition = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (useCaseDefinitionProperty.TryGetProperty("@id"u8, out var useCaseDefinitionExternalIdProperty)) - { - var propertyValue = useCaseDefinitionExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.useCaseDefinition = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the useCaseDefinition Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("direction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + directionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("elementId"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + elementIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.UseCases.UseCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("isAbstract"u8)) { - var propertyValue = arrayItem.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType != JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.IsAbstract = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("isComposite"u8)) + { + isCompositeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + isConstantSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the UseCaseUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VariantMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VariantMembershipDeSerializer.cs index 672963399..e2c141551 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VariantMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VariantMembershipDeSerializer.cs @@ -22,753 +22,945 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class VariantMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IVariantMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.DefinitionAndUsage; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class VariantMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IVariantMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VariantMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VariantMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var membershipOwningNamespaceSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedVariantUsageSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the VariantMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the VariantMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the VariantMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "VariantMembership") - { - throw new InvalidOperationException($"The VariantMembershipDeSerializer can only be used to deserialize objects of type IVariantMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the VariantMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membershipOwningNamespace"u8, out var membershipOwningNamespaceProperty)) - { - if (membershipOwningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.membershipOwningNamespace = Guid.Empty; - logger.LogDebug($"the VariantMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("membershipOwningNamespace"u8)) { - if (membershipOwningNamespaceProperty.TryGetProperty("@id"u8, out var membershipOwningNamespaceExternalIdProperty)) + membershipOwningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = membershipOwningNamespaceExternalIdProperty.GetString(); + dtoInstance.membershipOwningNamespace = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.membershipOwningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the VariantMembership.membershipOwningNamespace property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipOwningNamespaceValue)) + { + dtoInstance.membershipOwningNamespace = membershipOwningNamespaceValue; + } + + continue; } - } - else - { - logger.LogDebug("the membershipOwningNamespace Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); - if (propertyValue != null) + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVariantUsage"u8, out var ownedVariantUsageProperty)) - { - if (ownedVariantUsageProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedVariantUsage = Guid.Empty; - logger.LogDebug($"the VariantMembership.ownedVariantUsage property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedVariantUsage"u8)) { - if (ownedVariantUsageProperty.TryGetProperty("@id"u8, out var ownedVariantUsageExternalIdProperty)) + ownedVariantUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedVariantUsageExternalIdProperty.GetString(); + dtoInstance.ownedVariantUsage = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedVariantUsage = Guid.Parse(propertyValue); + logger.LogDebug("the VariantMembership.ownedVariantUsage property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the ownedVariantUsage Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVariantUsageValue)) + { + dtoInstance.ownedVariantUsage = ownedVariantUsageValue; + } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owningMembership = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.owningNamespace = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("visibility"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + visibilitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!membershipOwningNamespaceSeen) + { + logger.LogDebug("the membershipOwningNamespace Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedVariantUsageSeen) + { + logger.LogDebug("the ownedVariantUsage Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the shortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the VariantMembership json object."); + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the VariantMembership cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.DefinitionAndUsage.VariantMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.ElementId = propertyValue; + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the VariantMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseDefinitionDeSerializer.cs index 1305a7231..731bf5055 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseDefinitionDeSerializer.cs @@ -22,2023 +22,2411 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.VerificationCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class VerificationCaseDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IVerificationCaseDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.VerificationCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class VerificationCaseDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IVerificationCaseDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VerificationCaseDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VerificationCaseDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the VerificationCaseDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "VerificationCaseDefinition") - { - throw new InvalidOperationException($"The VerificationCaseDefinitionDeSerializer can only be used to deserialize objects of type IVerificationCaseDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionSeen = false; + var actorParameterSeen = false; + var aliasIdsSeen = false; + var calculationSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var verifiedRequirementSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the VerificationCaseDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the VerificationCaseDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the VerificationCaseDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("action"u8, out var actionProperty)) - { - foreach (var arrayItem in actionProperty.EnumerateArray()) + if (reader.ValueTextEquals("action"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionExternalIdProperty)) - { - var propertyValue = actionExternalIdProperty.GetString(); + actionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionValue)) { - dtoInstance.action.Add(Guid.Parse(propertyValue)); + dtoInstance.action.Add(actionValue); } } + + continue; } - } - else - { - logger.LogDebug("the action Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("calculation"u8, out var calculationProperty)) - { - foreach (var arrayItem in calculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("calculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var calculationExternalIdProperty)) - { - var propertyValue = calculationExternalIdProperty.GetString(); + calculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var calculationValue)) { - dtoInstance.calculation.Add(Guid.Parse(propertyValue)); + dtoInstance.calculation.Add(calculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the calculation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("name"u8)) { - dtoInstance.objectiveRequirement = null; + nameSeen = true; + reader.Read(); + + dtoInstance.name = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } - } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } - } - } - else - { - logger.LogDebug("the parameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the VerificationCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the VerificationCaseDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + dtoInstance.shortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("step"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) - { - var propertyValue = stepExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the VerificationCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the VerificationCaseDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("verifiedRequirement"u8, out var verifiedRequirementProperty)) - { - foreach (var arrayItem in verifiedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("verifiedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var verifiedRequirementExternalIdProperty)) - { - var propertyValue = verifiedRequirementExternalIdProperty.GetString(); + verifiedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var verifiedRequirementValue)) { - dtoInstance.verifiedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.verifiedRequirement.Add(verifiedRequirementValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the verifiedRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actionSeen) + { + logger.LogDebug("the action Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!calculationSeen) + { + logger.LogDebug("the calculation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!verifiedRequirementSeen) + { + logger.LogDebug("the verifiedRequirement Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the VerificationCaseDefinition json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the VerificationCaseDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isIndividual"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + isIndividualSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.OwningRelationship = null; + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); - } - } - } -} + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseUsageDeSerializer.cs index c8c93610e..a3f6eb670 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/VerificationCaseUsageDeSerializer.cs @@ -22,2600 +22,3097 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.VerificationCases; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class VerificationCaseUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IVerificationCaseUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.VerificationCases; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class VerificationCaseUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IVerificationCaseUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VerificationCaseUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("VerificationCaseUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the VerificationCaseUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "VerificationCaseUsage") + var actorParameterSeen = false; + var aliasIdsSeen = false; + var caseDefinitionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var objectiveRequirementSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var subjectParameterSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var verificationCaseDefinitionSeen = false; + var verifiedRequirementSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException($"The VerificationCaseUsageDeSerializer can only be used to deserialize objects of type IVerificationCaseUsage, a {@type.GetString()} was provided"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the VerificationCaseUsage json object."); + } - var dtoInstance = new SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage(); + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the VerificationCaseUsage cannot be deserialized"); + } - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the VerificationCaseUsage cannot be deserialized"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("actorParameter"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } + } + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = actorParameterExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("caseDefinition"u8)) { - var propertyValue = arrayItem.GetString(); + caseDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + dtoInstance.caseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var caseDefinitionValue)) + { + dtoInstance.caseDefinition = caseDefinitionValue; } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("caseDefinition"u8, out var caseDefinitionProperty)) - { - if (caseDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.caseDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (caseDefinitionProperty.TryGetProperty("@id"u8, out var caseDefinitionExternalIdProperty)) - { - var propertyValue = caseDefinitionExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.caseDefinition = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the caseDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.crossFeature = null; + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } - } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.endOwningType = null; + continue; } - else + + if (reader.ValueTextEquals("endOwningType"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.endOwningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the VerificationCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the VerificationCaseUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } - } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("objectiveRequirement"u8, out var objectiveRequirementProperty)) - { - if (objectiveRequirementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.objectiveRequirement = null; + continue; } - else + + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (objectiveRequirementProperty.TryGetProperty("@id"u8, out var objectiveRequirementExternalIdProperty)) - { - var propertyValue = objectiveRequirementExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.objectiveRequirement = Guid.Parse(propertyValue); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the objectiveRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("objectiveRequirement"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + objectiveRequirementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.objectiveRequirement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var objectiveRequirementValue)) + { + dtoInstance.objectiveRequirement = objectiveRequirementValue; } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owner"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningNamespace = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.OwningRelationship = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningType = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningUsage = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("parameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) + continue; + } + + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the VerificationCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("result"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the VerificationCaseUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the VerificationCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + logger.LogDebug("the VerificationCaseUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("verificationCaseDefinition"u8, out var verificationCaseDefinitionProperty)) - { - if (verificationCaseDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.verificationCaseDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("verificationCaseDefinition"u8)) { - if (verificationCaseDefinitionProperty.TryGetProperty("@id"u8, out var verificationCaseDefinitionExternalIdProperty)) - { - var propertyValue = verificationCaseDefinitionExternalIdProperty.GetString(); + verificationCaseDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.verificationCaseDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.verificationCaseDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var verificationCaseDefinitionValue)) + { + dtoInstance.verificationCaseDefinition = verificationCaseDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the verificationCaseDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("verifiedRequirement"u8, out var verifiedRequirementProperty)) - { - foreach (var arrayItem in verifiedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("verifiedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var verifiedRequirementExternalIdProperty)) - { - var propertyValue = verifiedRequirementExternalIdProperty.GetString(); + verifiedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var verifiedRequirementValue)) { - dtoInstance.verifiedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.verifiedRequirement.Add(verifiedRequirementValue); } } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the verifiedRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!actorParameterSeen) + { + logger.LogDebug("the actorParameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!caseDefinitionSeen) + { + logger.LogDebug("the caseDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!objectiveRequirementSeen) + { + logger.LogDebug("the objectiveRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!verificationCaseDefinitionSeen) + { + logger.LogDebug("the verificationCaseDefinition Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!verifiedRequirementSeen) + { + logger.LogDebug("the verifiedRequirement Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.VerificationCases.VerificationCaseUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) { - var propertyValue = arrayItem.GetString(); + throw new JsonException("Expected a property name in the VerificationCaseUsage json object."); + } - if (propertyValue != null) + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the VerificationCaseUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the VerificationCaseUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewDefinitionDeSerializer.cs index ccdf8eaed..a8a1a4628 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewDefinitionDeSerializer.cs @@ -22,1901 +22,2270 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ViewDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IViewDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ViewDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IViewDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var qualifiedNameSeen = false; + var satisfiedViewpointSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var viewSeen = false; + var viewConditionSeen = false; + var viewRenderingSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - throw new InvalidOperationException("The @type property is not available, the ViewDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewDefinition json object."); + } - if (@type.GetString() != "ViewDefinition") - { - throw new InvalidOperationException($"The ViewDefinitionDeSerializer can only be used to deserialize objects of type IViewDefinition, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewDefinition(); + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewDefinition cannot be deserialized"); + } - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (propertyValue == null) + if (reader.ValueTextEquals("aliasIds"u8)) { - throw new JsonException("The @id property is not present, the ViewDefinition cannot be deserialized"); + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = differencingTypeExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("satisfiedViewpoint"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + satisfiedViewpointSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var satisfiedViewpointValue)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + dtoInstance.satisfiedViewpoint.Add(satisfiedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.OwningRelationship = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } - } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("satisfiedViewpoint"u8, out var satisfiedViewpointProperty)) - { - foreach (var arrayItem in satisfiedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var satisfiedViewpointExternalIdProperty)) - { - var propertyValue = satisfiedViewpointExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.satisfiedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the satisfiedViewpoint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("view"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + viewSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.view.Add(viewValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("viewCondition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + viewConditionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewConditionValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.viewCondition.Add(viewConditionValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("view"u8, out var viewProperty)) - { - foreach (var arrayItem in viewProperty.EnumerateArray()) + if (reader.ValueTextEquals("viewRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var viewExternalIdProperty)) - { - var propertyValue = viewExternalIdProperty.GetString(); + viewRenderingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.view.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.viewRendering = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewRenderingValue)) + { + dtoInstance.viewRendering = viewRenderingValue; } + + continue; } - } - else - { - logger.LogDebug("the view Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewCondition"u8, out var viewConditionProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in viewConditionProperty.EnumerateArray()) + if (!aliasIdsSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var viewConditionExternalIdProperty)) - { - var propertyValue = viewConditionExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.viewCondition.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the aliasIds Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); } - } - else + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!satisfiedViewpointSeen) + { + logger.LogDebug("the satisfiedViewpoint Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!viewSeen) + { + logger.LogDebug("the view Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!viewConditionSeen) + { + logger.LogDebug("the viewCondition Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!viewRenderingSeen) + { + logger.LogDebug("the viewRendering Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the viewCondition Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewDefinition json object."); + } - if (jsonElement.TryGetProperty("viewRendering"u8, out var viewRenderingProperty)) - { - if (viewRenderingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.viewRendering = null; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (viewRenderingProperty.TryGetProperty("@id"u8, out var viewRenderingExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = viewRenderingExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.viewRendering = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the viewRendering Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); - } - } - } -} -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewRenderingMembershipDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewRenderingMembershipDeSerializer.cs index 508378258..93f31f400 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewRenderingMembershipDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewRenderingMembershipDeSerializer.cs @@ -22,778 +22,972 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ViewRenderingMembershipDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IViewRenderingMembership DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ViewRenderingMembershipDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IViewRenderingMembership DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewRenderingMembershipDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewRenderingMembershipDeSerializer"); + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var isLibraryElementSeen = false; + var nameSeen = false; + var ownedAnnotationSeen = false; + var ownedElementSeen = false; + var ownedMemberElementIdSeen = false; + var ownedMemberNameSeen = false; + var ownedMemberShortNameSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var qualifiedNameSeen = false; + var referencedRenderingSeen = false; + var relatedElementSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewRenderingMembership json object."); + } + + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewRenderingMembership cannot be deserialized"); + } - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ViewRenderingMembershipDeSerializer cannot be used to deserialize this JsonElement"); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (@type.GetString() != "ViewRenderingMembership") - { - throw new InvalidOperationException($"The ViewRenderingMembershipDeSerializer can only be used to deserialize objects of type IViewRenderingMembership, a {@type.GetString()} was provided"); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership(); + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) - { - var propertyValue = idProperty.GetString(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ViewRenderingMembership cannot be deserialized"); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } + + continue; } - else + + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("documentation"u8)) + { + documentationSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = documentationExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberElementId"u8, out var ownedMemberElementIdProperty)) - { - var propertyValue = ownedMemberElementIdProperty.GetString(); + if (reader.ValueTextEquals("ownedMemberElementId"u8)) + { + ownedMemberElementIdSeen = true; + reader.Read(); + + var ownedMemberElementIdValue = reader.GetString(); + + if (ownedMemberElementIdValue != null) + { + dtoInstance.ownedMemberElementId = ownedMemberElementIdValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedMemberName"u8)) { - dtoInstance.ownedMemberElementId = propertyValue; + ownedMemberNameSeen = true; + reader.Read(); + + dtoInstance.ownedMemberName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the ownedMemberElementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMemberName"u8, out var ownedMemberNameProperty)) - { - dtoInstance.ownedMemberName = ownedMemberNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("ownedMemberShortName"u8)) + { + ownedMemberShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("ownedMemberShortName"u8, out var ownedMemberShortNameProperty)) - { - dtoInstance.ownedMemberShortName = ownedMemberShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the ownedMemberShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + dtoInstance.ownedMemberShortName = reader.GetString(); - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - if (ownedRenderingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedRendering = Guid.Empty; - logger.LogDebug($"the ViewRenderingMembership.ownedRendering property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (ownedRenderingProperty.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) + ownedRenderingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + dtoInstance.ownedRendering = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.ownedRendering = Guid.Parse(propertyValue); + logger.LogDebug("the ViewRenderingMembership.ownedRendering property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) + { + dtoInstance.ownedRendering = ownedRenderingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owner = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningMembership = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningRelatedElementSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + dtoInstance.owningType = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); + logger.LogDebug("the ViewRenderingMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.OwningRelatedElement = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("referencedRendering"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) + referencedRenderingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + dtoInstance.referencedRendering = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + logger.LogDebug("the ViewRenderingMembership.referencedRendering property was not found in the Json. The value is set to Guid.Empty"); } } - } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var referencedRenderingValue)) + { + dtoInstance.referencedRendering = referencedRenderingValue; + } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("relatedElement"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + relatedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var relatedElementValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.relatedElement.Add(relatedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningType = Guid.Empty; - logger.LogDebug($"the ViewRenderingMembership.owningType property was not found in the Json. The value is set to Guid.Empty"); + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningType = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); + + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); - if (jsonElement.TryGetProperty("referencedRendering"u8, out var referencedRenderingProperty)) + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (referencedRenderingProperty.ValueKind == JsonValueKind.Null) + if (!aliasIdsSeen) { - dtoInstance.referencedRendering = Guid.Empty; - logger.LogDebug($"the ViewRenderingMembership.referencedRendering property was not found in the Json. The value is set to Guid.Empty"); + logger.LogDebug("the aliasIds Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); } - else + if (!declaredNameSeen) { - if (referencedRenderingProperty.TryGetProperty("@id"u8, out var referencedRenderingExternalIdProperty)) - { - var propertyValue = referencedRenderingExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.referencedRendering = Guid.Parse(propertyValue); - } - } + logger.LogDebug("the declaredName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); } - } - else + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberElementIdSeen) + { + logger.LogDebug("the ownedMemberElementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberNameSeen) + { + logger.LogDebug("the ownedMemberName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedMemberShortNameSeen) + { + logger.LogDebug("the ownedMemberShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!referencedRenderingSeen) + { + logger.LogDebug("the referencedRendering Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!relatedElementSeen) + { + logger.LogDebug("the relatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var elementIdSeen = false; + var isImpliedSeen = false; + var isImpliedIncludedSeen = false; + var ownedRelatedElementSeen = false; + var ownedRelationshipSeen = false; + var owningRelatedElementSeen = false; + var owningRelationshipSeen = false; + var visibilitySeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the referencedRendering Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewRenderingMembership json object."); + } - if (jsonElement.TryGetProperty("relatedElement"u8, out var relatedElementProperty)) - { - foreach (var arrayItem in relatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var relatedElementExternalIdProperty)) - { - var propertyValue = relatedElementExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.relatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewRenderingMembership cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the relatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewRenderingMembership dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + dtoInstance.DeclaredShortName = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImplied"u8, out var isImpliedProperty)) - { - if (isImpliedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsImplied = isImpliedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isImplied Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImplied"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImplied = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelatedElement"u8, out var ownedRelatedElementProperty)) - { - foreach (var arrayItem in ownedRelatedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelatedElementExternalIdProperty)) - { - var propertyValue = ownedRelatedElementExternalIdProperty.GetString(); + isImpliedIncludedSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwnedRelatedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelatedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelatedElementSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelatedElementValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelatedElement.Add(ownedRelatedElementValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelatedElement"u8, out var owningRelatedElementProperty)) - { - if (owningRelatedElementProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelatedElement = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (owningRelatedElementProperty.TryGetProperty("@id"u8, out var owningRelatedElementExternalIdProperty)) - { - var propertyValue = owningRelatedElementExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelatedElement = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelatedElement"u8)) { - dtoInstance.OwningRelationship = null; + owningRelatedElementSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelatedElement = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelatedElementValue)) + { + dtoInstance.OwningRelatedElement = owningRelatedElementValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("visibility"u8, out var visibilityProperty)) - { - dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(visibilityProperty.GetString()); - } - else - { - logger.LogDebug("the visibility Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("visibility"u8)) + { + visibilitySeen = true; + reader.Read(); - } - } -} + dtoInstance.Visibility = VisibilityKindDeSerializer.Deserialize(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedSeen) + { + logger.LogDebug("the isImplied Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelatedElementSeen) + { + logger.LogDebug("the ownedRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningRelatedElementSeen) + { + logger.LogDebug("the owningRelatedElement Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + if (!visibilitySeen) + { + logger.LogDebug("the visibility Json property was not found in the ViewRenderingMembership: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewUsageDeSerializer.cs index eea0c57ca..a6667e39d 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewUsageDeSerializer.cs @@ -22,2574 +22,3072 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ViewUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IViewUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ViewUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IViewUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ViewUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ViewUsage") - { - throw new InvalidOperationException($"The ViewUsageDeSerializer can only be used to deserialize objects of type IViewUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var aliasIdsSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedFeatureSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var exposedElementSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var itemDefinitionSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var satisfiedViewpointSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var viewConditionSeen = false; + var viewDefinitionSeen = false; + var viewRenderingSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ViewUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ViewUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ViewUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("crossFeature"u8)) + { + crossFeatureSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedFeature"u8, out var directedFeatureProperty)) - { - foreach (var arrayItem in directedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedFeatureExternalIdProperty)) - { - var propertyValue = directedFeatureExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedFeatureValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedFeature.Add(directedFeatureValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("exposedElement"u8, out var exposedElementProperty)) - { - foreach (var arrayItem in exposedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var exposedElementExternalIdProperty)) - { - var propertyValue = exposedElementExternalIdProperty.GetString(); + endOwningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.exposedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) + { + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; } - } - else - { - logger.LogDebug("the exposedElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("exposedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + exposedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var exposedElementValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.exposedElement.Add(exposedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ViewUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureMembership"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) - { - var propertyValue = featureTargetExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureTarget"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ViewUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } - } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.individualDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("importedMembership"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("individualDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; + } + + if (reader.ValueTextEquals("inheritedFeature"u8)) + { + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("itemDefinition"u8, out var itemDefinitionProperty)) - { - foreach (var arrayItem in itemDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var itemDefinitionExternalIdProperty)) - { - var propertyValue = itemDefinitionExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.itemDefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the itemDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("itemDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + itemDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var itemDefinitionValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.itemDefinition.Add(itemDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningNamespace = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.OwningRelationship = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.owningType = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + owningUsageSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; } + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningUsage = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningUsage = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("satisfiedViewpoint"u8)) + { + satisfiedViewpointSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("satisfiedViewpoint"u8, out var satisfiedViewpointProperty)) - { - foreach (var arrayItem in satisfiedViewpointProperty.EnumerateArray()) - { - if (arrayItem.TryGetProperty("@id"u8, out var satisfiedViewpointExternalIdProperty)) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = satisfiedViewpointExternalIdProperty.GetString(); - - if (propertyValue != null) + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var satisfiedViewpointValue)) { - dtoInstance.satisfiedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.satisfiedViewpoint.Add(satisfiedViewpointValue); } } - } - } - else - { - logger.LogDebug("the satisfiedViewpoint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("shortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + shortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.shortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewCondition"u8, out var viewConditionProperty)) - { - foreach (var arrayItem in viewConditionProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var viewConditionExternalIdProperty)) - { - var propertyValue = viewConditionExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.viewCondition.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } - } - } - else - { - logger.LogDebug("the viewCondition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewDefinition"u8, out var viewDefinitionProperty)) - { - if (viewDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.viewDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("viewCondition"u8)) { - if (viewDefinitionProperty.TryGetProperty("@id"u8, out var viewDefinitionExternalIdProperty)) - { - var propertyValue = viewDefinitionExternalIdProperty.GetString(); + viewConditionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewConditionValue)) { - dtoInstance.viewDefinition = Guid.Parse(propertyValue); + dtoInstance.viewCondition.Add(viewConditionValue); } } + + continue; } - } - else - { - logger.LogDebug("the viewDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewRendering"u8, out var viewRenderingProperty)) - { - if (viewRenderingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("viewDefinition"u8)) { - dtoInstance.viewRendering = null; + viewDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.viewDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewDefinitionValue)) + { + dtoInstance.viewDefinition = viewDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("viewRendering"u8)) { - if (viewRenderingProperty.TryGetProperty("@id"u8, out var viewRenderingExternalIdProperty)) - { - var propertyValue = viewRenderingExternalIdProperty.GetString(); + viewRenderingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.viewRendering = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.viewRendering = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewRenderingValue)) + { + dtoInstance.viewRendering = viewRenderingValue; + } + + continue; } - } - else + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - logger.LogDebug("the viewRendering Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewUsage dtoInstance, JsonElement jsonElement, ILogger logger) + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!directedFeatureSeen) + { + logger.LogDebug("the directedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!exposedElementSeen) + { + logger.LogDebug("the exposedElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!itemDefinitionSeen) + { + logger.LogDebug("the itemDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!satisfiedViewpointSeen) + { + logger.LogDebug("the satisfiedViewpoint Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!viewConditionSeen) + { + logger.LogDebug("the viewCondition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!viewDefinitionSeen) + { + logger.LogDebug("the viewDefinition Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!viewRenderingSeen) + { + logger.LogDebug("the viewRendering Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewUsage json object."); + } + + if (reader.ValueTextEquals("@id"u8)) { - var propertyValue = arrayItem.GetString(); + reader.Read(); - if (propertyValue != null) + if (reader.TokenType == JsonTokenType.Null) { - dtoInstance.AliasIds.Add(propertyValue); + throw new JsonException("The @id property is not present, the ViewUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("aliasIds"u8)) + { + aliasIdsSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var aliasIdsValue = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } + } - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredName"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("declaredShortName"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + declaredShortNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isPortion"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsPortion = reader.GetBoolean(); + } - if (propertyValue != null) - { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); - } + continue; + } + + if (reader.ValueTextEquals("isSufficient"u8)) + { + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.OwningRelationship = null; + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - else + + if (reader.ValueTextEquals("isVariation"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("owningRelationship"u8)) + { + owningRelationshipSeen = true; + reader.Read(); - } - } -} + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ViewUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointDefinitionDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointDefinitionDeSerializer.cs index d87996a1b..92e42ab46 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointDefinitionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointDefinitionDeSerializer.cs @@ -22,2056 +22,2460 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ViewpointDefinitionDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IViewpointDefinition DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ViewpointDefinitionDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IViewpointDefinition DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewpointDefinitionDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewpointDefinitionDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ViewpointDefinitionDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ViewpointDefinition") - { - throw new InvalidOperationException($"The ViewpointDefinitionDeSerializer can only be used to deserialize objects of type IViewpointDefinition, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var expressionSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isConjugatedSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var outputSeen = false; + var ownedActionSeen = false; + var ownedAllocationSeen = false; + var ownedAnalysisCaseSeen = false; + var ownedAnnotationSeen = false; + var ownedAttributeSeen = false; + var ownedCalculationSeen = false; + var ownedCaseSeen = false; + var ownedConcernSeen = false; + var ownedConjugatorSeen = false; + var ownedConnectionSeen = false; + var ownedConstraintSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedEnumerationSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedFlowSeen = false; + var ownedImportSeen = false; + var ownedInterfaceSeen = false; + var ownedIntersectingSeen = false; + var ownedItemSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedMetadataSeen = false; + var ownedOccurrenceSeen = false; + var ownedPartSeen = false; + var ownedPortSeen = false; + var ownedReferenceSeen = false; + var ownedRelationshipSeen = false; + var ownedRenderingSeen = false; + var ownedRequirementSeen = false; + var ownedSpecializationSeen = false; + var ownedStateSeen = false; + var ownedSubclassificationSeen = false; + var ownedTransitionSeen = false; + var ownedUnioningSeen = false; + var ownedUsageSeen = false; + var ownedUseCaseSeen = false; + var ownedVerificationCaseSeen = false; + var ownedViewSeen = false; + var ownedViewpointSeen = false; + var ownerSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var parameterSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var stepSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var viewpointStakeholderSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the ViewpointDefinition cannot be deserialized"); + throw new JsonException("Expected a property name in the ViewpointDefinition json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewpointDefinition cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + actorParameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.actorParameter.Add(actorParameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) - { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("expression"u8, out var expressionProperty)) - { - foreach (var arrayItem in expressionProperty.EnumerateArray()) + if (reader.ValueTextEquals("expression"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var expressionExternalIdProperty)) - { - var propertyValue = expressionExternalIdProperty.GetString(); + expressionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var expressionValue)) { - dtoInstance.expression.Add(Guid.Parse(propertyValue)); + dtoInstance.expression.Add(expressionValue); } } + + continue; } - } - else - { - logger.LogDebug("the expression Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("feature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) - { - var propertyValue = featureExternalIdProperty.GetString(); + featureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAction"u8, out var ownedActionProperty)) - { - foreach (var arrayItem in ownedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedActionExternalIdProperty)) - { - var propertyValue = ownedActionExternalIdProperty.GetString(); + ownedActionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedActionValue)) { - dtoInstance.ownedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAction.Add(ownedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAction Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAllocation"u8, out var ownedAllocationProperty)) - { - foreach (var arrayItem in ownedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAllocationExternalIdProperty)) - { - var propertyValue = ownedAllocationExternalIdProperty.GetString(); + ownedAllocationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAllocationValue)) { - dtoInstance.ownedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAllocation.Add(ownedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAllocation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnalysisCase"u8, out var ownedAnalysisCaseProperty)) - { - foreach (var arrayItem in ownedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnalysisCaseExternalIdProperty)) - { - var propertyValue = ownedAnalysisCaseExternalIdProperty.GetString(); + ownedAnalysisCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnalysisCaseValue)) { - dtoInstance.ownedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnalysisCase.Add(ownedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnalysisCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAttribute"u8, out var ownedAttributeProperty)) - { - foreach (var arrayItem in ownedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAttributeExternalIdProperty)) - { - var propertyValue = ownedAttributeExternalIdProperty.GetString(); + ownedAttributeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAttributeValue)) { - dtoInstance.ownedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAttribute.Add(ownedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedAttribute Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCalculation"u8, out var ownedCalculationProperty)) - { - foreach (var arrayItem in ownedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCalculationExternalIdProperty)) - { - var propertyValue = ownedCalculationExternalIdProperty.GetString(); + ownedCalculationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCalculationValue)) { - dtoInstance.ownedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCalculation.Add(ownedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCalculation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCase"u8, out var ownedCaseProperty)) - { - foreach (var arrayItem in ownedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedCaseExternalIdProperty)) - { - var propertyValue = ownedCaseExternalIdProperty.GetString(); + ownedCaseSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCaseValue)) { - dtoInstance.ownedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedCase.Add(ownedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConcern"u8, out var ownedConcernProperty)) - { - foreach (var arrayItem in ownedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConcernExternalIdProperty)) - { - var propertyValue = ownedConcernExternalIdProperty.GetString(); + ownedConcernSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConcernValue)) { - dtoInstance.ownedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConcern.Add(ownedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConcern Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - dtoInstance.ownedConjugator = null; + ownedConjugatorSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedConnection"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConnectionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.ownedConnection.Add(ownedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConnection"u8, out var ownedConnectionProperty)) - { - foreach (var arrayItem in ownedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConnectionExternalIdProperty)) - { - var propertyValue = ownedConnectionExternalIdProperty.GetString(); + ownedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConstraintValue)) { - dtoInstance.ownedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedConstraint.Add(ownedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConnection Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConstraint"u8, out var ownedConstraintProperty)) - { - foreach (var arrayItem in ownedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedConstraintExternalIdProperty)) - { - var propertyValue = ownedConstraintExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEnumerationValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEnumeration.Add(ownedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEnumeration"u8, out var ownedEnumerationProperty)) - { - foreach (var arrayItem in ownedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEnumerationExternalIdProperty)) - { - var propertyValue = ownedEnumerationExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEnumeration Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFlowValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFlow.Add(ownedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFlow"u8, out var ownedFlowProperty)) - { - foreach (var arrayItem in ownedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFlowExternalIdProperty)) - { - var propertyValue = ownedFlowExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFlow Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedInterfaceValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedInterface.Add(ownedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedInterface"u8, out var ownedInterfaceProperty)) - { - foreach (var arrayItem in ownedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedInterfaceExternalIdProperty)) - { - var propertyValue = ownedInterfaceExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedInterface Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedItemValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedItem.Add(ownedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedItem"u8, out var ownedItemProperty)) - { - foreach (var arrayItem in ownedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedItemExternalIdProperty)) - { - var propertyValue = ownedItemExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedItem Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMetadataValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMetadata.Add(ownedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMetadata"u8, out var ownedMetadataProperty)) - { - foreach (var arrayItem in ownedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMetadataExternalIdProperty)) - { - var propertyValue = ownedMetadataExternalIdProperty.GetString(); + ownedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedOccurrenceValue)) { - dtoInstance.ownedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedOccurrence.Add(ownedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMetadata Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedOccurrence"u8, out var ownedOccurrenceProperty)) - { - foreach (var arrayItem in ownedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedOccurrenceExternalIdProperty)) - { - var propertyValue = ownedOccurrenceExternalIdProperty.GetString(); + ownedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPartValue)) { - dtoInstance.ownedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPart.Add(ownedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedOccurrence Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPart"u8, out var ownedPartProperty)) - { - foreach (var arrayItem in ownedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPartExternalIdProperty)) - { - var propertyValue = ownedPartExternalIdProperty.GetString(); + ownedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedPortValue)) { - dtoInstance.ownedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedPort.Add(ownedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPart Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedPort"u8, out var ownedPortProperty)) - { - foreach (var arrayItem in ownedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedPortExternalIdProperty)) - { - var propertyValue = ownedPortExternalIdProperty.GetString(); + ownedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceValue)) { - dtoInstance.ownedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedReference.Add(ownedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedPort Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReference"u8, out var ownedReferenceProperty)) - { - foreach (var arrayItem in ownedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedReferenceExternalIdProperty)) - { - var propertyValue = ownedReferenceExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReference Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRenderingValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRendering.Add(ownedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRendering"u8, out var ownedRenderingProperty)) - { - foreach (var arrayItem in ownedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRenderingExternalIdProperty)) - { - var propertyValue = ownedRenderingExternalIdProperty.GetString(); + ownedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRequirementValue)) { - dtoInstance.ownedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRequirement.Add(ownedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRendering Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRequirement"u8, out var ownedRequirementProperty)) - { - foreach (var arrayItem in ownedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRequirementExternalIdProperty)) - { - var propertyValue = ownedRequirementExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRequirement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedStateValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedState.Add(ownedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedState"u8, out var ownedStateProperty)) - { - foreach (var arrayItem in ownedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubclassification"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedStateExternalIdProperty)) - { - var propertyValue = ownedStateExternalIdProperty.GetString(); + ownedSubclassificationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubclassificationValue)) { - dtoInstance.ownedState.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubclassification.Add(ownedSubclassificationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedState Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubclassification"u8, out var ownedSubclassificationProperty)) - { - foreach (var arrayItem in ownedSubclassificationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubclassificationExternalIdProperty)) - { - var propertyValue = ownedSubclassificationExternalIdProperty.GetString(); + ownedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTransitionValue)) { - dtoInstance.ownedSubclassification.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTransition.Add(ownedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubclassification Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTransition"u8, out var ownedTransitionProperty)) - { - foreach (var arrayItem in ownedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTransitionExternalIdProperty)) - { - var propertyValue = ownedTransitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTransition Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUsageValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUsage.Add(ownedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUsage"u8, out var ownedUsageProperty)) - { - foreach (var arrayItem in ownedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUsageExternalIdProperty)) - { - var propertyValue = ownedUsageExternalIdProperty.GetString(); + ownedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUseCaseValue)) { - dtoInstance.ownedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUseCase.Add(ownedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUsage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUseCase"u8, out var ownedUseCaseProperty)) - { - foreach (var arrayItem in ownedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUseCaseExternalIdProperty)) - { - var propertyValue = ownedUseCaseExternalIdProperty.GetString(); + ownedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedVerificationCaseValue)) { - dtoInstance.ownedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedVerificationCase.Add(ownedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedUseCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedVerificationCase"u8, out var ownedVerificationCaseProperty)) - { - foreach (var arrayItem in ownedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedVerificationCaseExternalIdProperty)) - { - var propertyValue = ownedVerificationCaseExternalIdProperty.GetString(); + ownedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewValue)) { - dtoInstance.ownedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedView.Add(ownedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedVerificationCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedView"u8, out var ownedViewProperty)) - { - foreach (var arrayItem in ownedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewExternalIdProperty)) - { - var propertyValue = ownedViewExternalIdProperty.GetString(); + ownedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedViewpointValue)) { - dtoInstance.ownedView.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedViewpoint.Add(ownedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedView Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedViewpoint"u8, out var ownedViewpointProperty)) - { - foreach (var arrayItem in ownedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedViewpointExternalIdProperty)) - { - var propertyValue = ownedViewpointExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedViewpoint.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedViewpoint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningMembership"u8)) { - dtoInstance.owner = null; + owningMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owner Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningMembership = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.owningMembership = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("qualifiedName"u8)) { - dtoInstance.owningNamespace = null; + qualifiedNameSeen = true; + reader.Read(); + + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("reqId"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + reqIdSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } - } - } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ViewpointDefinition.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ViewpointDefinition.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("step"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) - { - var propertyValue = resultExternalIdProperty.GetString(); + stepSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stepValue)) { - dtoInstance.result = Guid.Parse(propertyValue); + dtoInstance.step.Add(stepValue); } } - } - } - else - { - logger.LogDebug("the result Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ViewpointDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("step"u8, out var stepProperty)) - { - foreach (var arrayItem in stepProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stepExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stepExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.step.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } - } - } - else - { - logger.LogDebug("the step Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the ViewpointDefinition.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.text.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the text Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("viewpointStakeholder"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + viewpointStakeholderSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewpointStakeholderValue)) { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); + dtoInstance.viewpointStakeholder.Add(viewpointStakeholderValue); } } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (!actorParameterSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + logger.LogDebug("the actorParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!expressionSeen) + { + logger.LogDebug("the expression Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedActionSeen) + { + logger.LogDebug("the ownedAction Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAllocationSeen) + { + logger.LogDebug("the ownedAllocation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnalysisCaseSeen) + { + logger.LogDebug("the ownedAnalysisCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedAttributeSeen) + { + logger.LogDebug("the ownedAttribute Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCalculationSeen) + { + logger.LogDebug("the ownedCalculation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedCaseSeen) + { + logger.LogDebug("the ownedCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConcernSeen) + { + logger.LogDebug("the ownedConcern Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConnectionSeen) + { + logger.LogDebug("the ownedConnection Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedConstraintSeen) + { + logger.LogDebug("the ownedConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedEnumerationSeen) + { + logger.LogDebug("the ownedEnumeration Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedFlowSeen) + { + logger.LogDebug("the ownedFlow Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedInterfaceSeen) + { + logger.LogDebug("the ownedInterface Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedItemSeen) + { + logger.LogDebug("the ownedItem Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedMetadataSeen) + { + logger.LogDebug("the ownedMetadata Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedOccurrenceSeen) + { + logger.LogDebug("the ownedOccurrence Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPartSeen) + { + logger.LogDebug("the ownedPart Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedPortSeen) + { + logger.LogDebug("the ownedPort Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSeen) + { + logger.LogDebug("the ownedReference Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRenderingSeen) + { + logger.LogDebug("the ownedRendering Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRequirementSeen) + { + logger.LogDebug("the ownedRequirement Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedStateSeen) + { + logger.LogDebug("the ownedState Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedSubclassificationSeen) + { + logger.LogDebug("the ownedSubclassification Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedTransitionSeen) + { + logger.LogDebug("the ownedTransition Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUsageSeen) + { + logger.LogDebug("the ownedUsage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedUseCaseSeen) + { + logger.LogDebug("the ownedUseCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedVerificationCaseSeen) + { + logger.LogDebug("the ownedVerificationCase Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewSeen) + { + logger.LogDebug("the ownedView Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedViewpointSeen) + { + logger.LogDebug("the ownedViewpoint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!stepSeen) + { + logger.LogDebug("the step Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!viewpointStakeholderSeen) + { + logger.LogDebug("the viewpointStakeholder Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isSufficientSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewpointDefinition json object."); + } - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewpointDefinition cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewpointStakeholder"u8, out var viewpointStakeholderProperty)) - { - foreach (var arrayItem in viewpointStakeholderProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var viewpointStakeholderExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = viewpointStakeholderExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.viewpointStakeholder.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the viewpointStakeholder Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointDefinition dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("elementId"u8)) + { + elementIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + var elementIdValue = reader.GetString(); - if (propertyValue != null) - { - dtoInstance.ElementId = propertyValue; + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - } - } -} + dtoInstance.ReqId = reader.GetString(); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ViewpointDefinition: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointUsageDeSerializer.cs index 680848eff..5672da6bc 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/ViewpointUsageDeSerializer.cs @@ -22,2669 +22,3193 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Views; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class ViewpointUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IViewpointUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Views; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class ViewpointUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IViewpointUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewpointUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("ViewpointUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the ViewpointUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "ViewpointUsage") - { - throw new InvalidOperationException($"The ViewpointUsageDeSerializer can only be used to deserialize objects of type IViewpointUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actorParameterSeen = false; + var aliasIdsSeen = false; + var assumedConstraintSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var framedConcernSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isModelLevelEvaluableSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var occurrenceDefinitionSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var reqIdSeen = false; + var requiredConstraintSeen = false; + var resultSeen = false; + var shortNameSeen = false; + var stakeholderParameterSeen = false; + var subjectParameterSeen = false; + var textSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var viewpointDefinitionSeen = false; + var viewpointStakeholderSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) - { - throw new JsonException("The @id property is not present, the ViewpointUsage cannot be deserialized"); - } - else + if (reader.TokenType != JsonTokenType.PropertyName) { - dtoInstance.Id = Guid.Parse(propertyValue); + throw new JsonException("Expected a property name in the ViewpointUsage json object."); } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actorParameter"u8, out var actorParameterProperty)) - { - foreach (var arrayItem in actorParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actorParameterExternalIdProperty)) - { - var propertyValue = actorParameterExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.actorParameter.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewpointUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the actorParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("actorParameter"u8)) { - var propertyValue = arrayItem.GetString(); + actorParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actorParameterValue)) + { + dtoInstance.actorParameter.Add(actorParameterValue); + } } + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("assumedConstraint"u8, out var assumedConstraintProperty)) - { - foreach (var arrayItem in assumedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var assumedConstraintExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = assumedConstraintExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.assumedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the assumedConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("assumedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + assumedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var assumedConstraintValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.assumedConstraint.Add(assumedConstraintValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.crossFeature = Guid.Parse(propertyValue); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("crossFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; + } + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("declaredName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + declaredNameSeen = true; + reader.Read(); + + dtoInstance.DeclaredName = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("differencingType"u8)) + { + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the ViewpointUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the ViewpointUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("framedConcern"u8, out var framedConcernProperty)) - { - foreach (var arrayItem in framedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("framedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var framedConcernExternalIdProperty)) - { - var propertyValue = framedConcernExternalIdProperty.GetString(); + framedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var framedConcernValue)) { - dtoInstance.framedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.framedConcern.Add(framedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the framedConcern Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isModelLevelEvaluable"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isModelLevelEvaluableSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isModelLevelEvaluable = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isModelLevelEvaluable"u8, out var isModelLevelEvaluableProperty)) - { - if (isModelLevelEvaluableProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isModelLevelEvaluable = isModelLevelEvaluableProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isReference Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + isSufficientSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + isVariationSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.member.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + mayTimeVarySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("member"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.multiplicity = Guid.Parse(propertyValue); + dtoInstance.member.Add(memberValue); } } - } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("multiplicity"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("name"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.name = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("occurrenceDefinition"u8, out var occurrenceDefinitionProperty)) - { - foreach (var arrayItem in occurrenceDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var occurrenceDefinitionExternalIdProperty)) - { - var propertyValue = occurrenceDefinitionExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.occurrenceDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the occurrenceDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("occurrenceDefinition"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + occurrenceDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var occurrenceDefinitionValue)) { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); + dtoInstance.occurrenceDefinition.Add(occurrenceDefinitionValue); } } - } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedCrossSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("output"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } - } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedCrossSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedMember"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) + ownedReferenceSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; + } + + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.owner = Guid.Parse(propertyValue); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owner"u8)) { - dtoInstance.owningFeatureMembership = null; + ownerSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - dtoInstance.owningMembership = null; + owningFeatureMembershipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningNamespace"u8)) { - dtoInstance.owningNamespace = null; + owningNamespaceSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningType"u8)) { - dtoInstance.OwningRelationship = null; + owningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningUsage"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + dtoInstance.owningUsage = owningUsageValue; + } + + continue; + } + + if (reader.ValueTextEquals("parameter"u8)) + { + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningType = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("reqId"u8)) { - dtoInstance.owningUsage = null; + reqIdSeen = true; + reader.Read(); + + dtoInstance.ReqId = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("requiredConstraint"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + requiredConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var requiredConstraintValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.requiredConstraint.Add(requiredConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("result"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) + resultSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = parameterExternalIdProperty.GetString(); + dtoInstance.result = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the ViewpointUsage.result property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var resultValue)) + { + dtoInstance.result = resultValue; + } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("shortName"u8)) + { + shortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + dtoInstance.shortName = reader.GetString(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("requiredConstraint"u8, out var requiredConstraintProperty)) - { - foreach (var arrayItem in requiredConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("stakeholderParameter"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var requiredConstraintExternalIdProperty)) - { - var propertyValue = requiredConstraintExternalIdProperty.GetString(); + stakeholderParameterSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var stakeholderParameterValue)) { - dtoInstance.requiredConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.stakeholderParameter.Add(stakeholderParameterValue); } } - } - } - else - { - logger.LogDebug("the requiredConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("result"u8, out var resultProperty)) - { - if (resultProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.result = Guid.Empty; - logger.LogDebug($"the ViewpointUsage.result property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("subjectParameter"u8)) { - if (resultProperty.TryGetProperty("@id"u8, out var resultExternalIdProperty)) + subjectParameterSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = resultExternalIdProperty.GetString(); + dtoInstance.subjectParameter = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.result = Guid.Parse(propertyValue); + logger.LogDebug("the ViewpointUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var subjectParameterValue)) + { + dtoInstance.subjectParameter = subjectParameterValue; + } + + continue; } - } - else - { - logger.LogDebug("the result Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - - if (jsonElement.TryGetProperty("stakeholderParameter"u8, out var stakeholderParameterProperty)) - { - foreach (var arrayItem in stakeholderParameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("text"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var stakeholderParameterExternalIdProperty)) + textSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = stakeholderParameterExternalIdProperty.GetString(); + var textValue = reader.GetString(); - if (propertyValue != null) + if (textValue != null) { - dtoInstance.stakeholderParameter.Add(Guid.Parse(propertyValue)); + dtoInstance.text.Add(textValue); } } - } - } - else - { - logger.LogDebug("the stakeholderParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("subjectParameter"u8, out var subjectParameterProperty)) - { - if (subjectParameterProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.subjectParameter = Guid.Empty; - logger.LogDebug($"the ViewpointUsage.subjectParameter property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (subjectParameterProperty.TryGetProperty("@id"u8, out var subjectParameterExternalIdProperty)) - { - var propertyValue = subjectParameterExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.subjectParameter = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the subjectParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("text"u8, out var textProperty)) - { - foreach (var arrayItem in textProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - var propertyValue = arrayItem.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.text.Add(propertyValue); + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) + { + dtoInstance.unioningType.Add(unioningTypeValue); + } } + + continue; } - } - else - { - logger.LogDebug("the text Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } + + continue; } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("variantMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) - { - var propertyValue = usageExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) - { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (reader.ValueTextEquals("viewpointDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); + viewpointDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.viewpointDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewpointDefinitionValue)) + { + dtoInstance.viewpointDefinition = viewpointDefinitionValue; } + + continue; } - } - else - { - logger.LogDebug("the variant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("viewpointStakeholder"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + viewpointStakeholderSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var viewpointStakeholderValue)) { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.viewpointStakeholder.Add(viewpointStakeholderValue); } } + + continue; } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewpointDefinition"u8, out var viewpointDefinitionProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - if (viewpointDefinitionProperty.ValueKind == JsonValueKind.Null) + if (!actorParameterSeen) { - dtoInstance.viewpointDefinition = null; + logger.LogDebug("the actorParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); } - else + if (!aliasIdsSeen) { - if (viewpointDefinitionProperty.TryGetProperty("@id"u8, out var viewpointDefinitionExternalIdProperty)) - { - var propertyValue = viewpointDefinitionExternalIdProperty.GetString(); + logger.LogDebug("the aliasIds Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!assumedConstraintSeen) + { + logger.LogDebug("the assumedConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!framedConcernSeen) + { + logger.LogDebug("the framedConcern Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isModelLevelEvaluableSeen) + { + logger.LogDebug("the isModelLevelEvaluable Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!occurrenceDefinitionSeen) + { + logger.LogDebug("the occurrenceDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!requiredConstraintSeen) + { + logger.LogDebug("the requiredConstraint Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!resultSeen) + { + logger.LogDebug("the result Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!stakeholderParameterSeen) + { + logger.LogDebug("the stakeholderParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!subjectParameterSeen) + { + logger.LogDebug("the subjectParameter Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!textSeen) + { + logger.LogDebug("the text Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!viewpointDefinitionSeen) + { + logger.LogDebug("the viewpointDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!viewpointStakeholderSeen) + { + logger.LogDebug("the viewpointStakeholder Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + var reqIdSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the ViewpointUsage json object."); + } - if (propertyValue != null) - { - dtoInstance.viewpointDefinition = Guid.Parse(propertyValue); - } + if (reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the ViewpointUsage cannot be deserialized"); } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - else - { - logger.LogDebug("the viewpointDefinition Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("viewpointStakeholder"u8, out var viewpointStakeholderProperty)) - { - foreach (var arrayItem in viewpointStakeholderProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var viewpointStakeholderExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = viewpointStakeholderExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.viewpointStakeholder.Add(Guid.Parse(propertyValue)); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the viewpointStakeholder Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Views.ViewpointUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } + dtoInstance.DeclaredName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("direction"u8)) + { + directionSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.ElementId = propertyValue; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.OwningRelationship = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("portionKind"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + portionKindSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } - } + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("reqId"u8)) + { + reqIdSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("reqId"u8, out var reqIdProperty)) - { - dtoInstance.ReqId = reqIdProperty.GetString(); - } - else - { - logger.LogDebug("the reqId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); - } + dtoInstance.ReqId = reader.GetString(); - } - } -} + continue; + } -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + if (!reqIdSeen) + { + logger.LogDebug("the reqId Json property was not found in the ViewpointUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/WhileLoopActionUsageDeSerializer.cs b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/WhileLoopActionUsageDeSerializer.cs index 7f6d21437..a77224f55 100644 --- a/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/WhileLoopActionUsageDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/Core/AutoGenDeSerializer/WhileLoopActionUsageDeSerializer.cs @@ -22,2520 +22,3012 @@ // --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- // ------------------------------------------------------------------------------------------------ -namespace SysML2.NET.Serializer.Json.Core.DTO -{ - using System; - using System.Text.Json; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Core.DTO.Systems.Actions; - using SysML2.NET.Serializer.Json; - - /// - /// The purpose of the is to provide deserialization capabilities - /// for the interface - /// - internal static class WhileLoopActionUsageDeSerializer - { - /// - /// Deserializes an instance of from the provided - /// - /// - /// The that contains the json object - /// - /// - /// enumeration specifying what kind of serialization shall be used - /// - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// - /// The used to setup logging - /// - /// - /// an instance of - /// - internal static IWhileLoopActionUsage DeSerialize(JsonElement jsonElement, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) +namespace SysML2.NET.Serializer.Json.Core.DTO +{ + using System; + using System.Text.Json; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Core.DTO.Systems.Actions; + using SysML2.NET.Serializer.Json; + using SysML2.NET.Serializer.Json.Utility; + + /// + /// The purpose of the is to provide deserialization capabilities + /// for the interface + /// + internal static class WhileLoopActionUsageDeSerializer + { + /// + /// Deserializes an instance of from the provided + /// + /// + /// The positioned on the of the + /// json object. On return the reader is positioned on the matching + /// + /// + /// + /// enumeration specifying what kind of serialization shall be used + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// + /// The used to setup logging + /// + /// + /// an instance of + /// + /// + /// The @type property is the discriminator that the caller dispatched on, so it is skipped rather + /// than re-validated here + /// + internal static IWhileLoopActionUsage DeSerialize(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory = null) + { + var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("WhileLoopActionUsageDeSerializer"); + + Utf8JsonReaderHelper.Expect(ref reader, JsonTokenType.StartObject); + + var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage(); + + if (deserializeDerivedProperties) + { + DeserializeDtoIncludingDerivedProperties(dtoInstance, ref reader, logger); + } + else + { + DeserializeDtoExcludingDerivedProperties(dtoInstance, ref reader, logger); + } + + return dtoInstance; + } + + /// + /// Deserializes properties of a + /// from a , including derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) { - var logger = loggerFactory == null ? NullLogger.Instance : loggerFactory.CreateLogger("WhileLoopActionUsageDeSerializer"); - - if (!jsonElement.TryGetProperty("@type"u8, out var @type)) - { - throw new InvalidOperationException("The @type property is not available, the WhileLoopActionUsageDeSerializer cannot be used to deserialize this JsonElement"); - } - - if (@type.GetString() != "WhileLoopActionUsage") - { - throw new InvalidOperationException($"The WhileLoopActionUsageDeSerializer can only be used to deserialize objects of type IWhileLoopActionUsage, a {@type.GetString()} was provided"); - } - - var dtoInstance = new SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage(); - - if (jsonElement.TryGetProperty("@id"u8, out var idProperty)) + var actionDefinitionSeen = false; + var aliasIdsSeen = false; + var bodyActionSeen = false; + var chainingFeatureSeen = false; + var crossFeatureSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var differencingTypeSeen = false; + var directedUsageSeen = false; + var directionSeen = false; + var documentationSeen = false; + var elementIdSeen = false; + var endFeatureSeen = false; + var endOwningTypeSeen = false; + var featureSeen = false; + var featureMembershipSeen = false; + var featureTargetSeen = false; + var featuringTypeSeen = false; + var importedMembershipSeen = false; + var individualDefinitionSeen = false; + var inheritedFeatureSeen = false; + var inheritedMembershipSeen = false; + var inputSeen = false; + var intersectingTypeSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConjugatedSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isLibraryElementSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isReferenceSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var mayTimeVarySeen = false; + var memberSeen = false; + var membershipSeen = false; + var multiplicitySeen = false; + var nameSeen = false; + var nestedActionSeen = false; + var nestedAllocationSeen = false; + var nestedAnalysisCaseSeen = false; + var nestedAttributeSeen = false; + var nestedCalculationSeen = false; + var nestedCaseSeen = false; + var nestedConcernSeen = false; + var nestedConnectionSeen = false; + var nestedConstraintSeen = false; + var nestedEnumerationSeen = false; + var nestedFlowSeen = false; + var nestedInterfaceSeen = false; + var nestedItemSeen = false; + var nestedMetadataSeen = false; + var nestedOccurrenceSeen = false; + var nestedPartSeen = false; + var nestedPortSeen = false; + var nestedReferenceSeen = false; + var nestedRenderingSeen = false; + var nestedRequirementSeen = false; + var nestedStateSeen = false; + var nestedTransitionSeen = false; + var nestedUsageSeen = false; + var nestedUseCaseSeen = false; + var nestedVerificationCaseSeen = false; + var nestedViewSeen = false; + var nestedViewpointSeen = false; + var outputSeen = false; + var ownedAnnotationSeen = false; + var ownedConjugatorSeen = false; + var ownedCrossSubsettingSeen = false; + var ownedDifferencingSeen = false; + var ownedDisjoiningSeen = false; + var ownedElementSeen = false; + var ownedEndFeatureSeen = false; + var ownedFeatureSeen = false; + var ownedFeatureChainingSeen = false; + var ownedFeatureInvertingSeen = false; + var ownedFeatureMembershipSeen = false; + var ownedImportSeen = false; + var ownedIntersectingSeen = false; + var ownedMemberSeen = false; + var ownedMembershipSeen = false; + var ownedRedefinitionSeen = false; + var ownedReferenceSubsettingSeen = false; + var ownedRelationshipSeen = false; + var ownedSpecializationSeen = false; + var ownedSubsettingSeen = false; + var ownedTypeFeaturingSeen = false; + var ownedTypingSeen = false; + var ownedUnioningSeen = false; + var ownerSeen = false; + var owningDefinitionSeen = false; + var owningFeatureMembershipSeen = false; + var owningMembershipSeen = false; + var owningNamespaceSeen = false; + var owningRelationshipSeen = false; + var owningTypeSeen = false; + var owningUsageSeen = false; + var parameterSeen = false; + var portionKindSeen = false; + var qualifiedNameSeen = false; + var shortNameSeen = false; + var textualRepresentationSeen = false; + var unioningTypeSeen = false; + var untilArgumentSeen = false; + var usageSeen = false; + var variantSeen = false; + var variantMembershipSeen = false; + var whileArgumentSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - var propertyValue = idProperty.GetString(); - - if (propertyValue == null) + if (reader.TokenType != JsonTokenType.PropertyName) { - throw new JsonException("The @id property is not present, the WhileLoopActionUsage cannot be deserialized"); + throw new JsonException("Expected a property name in the WhileLoopActionUsage json object."); } - else + + if (reader.ValueTextEquals("@id"u8)) { - dtoInstance.Id = Guid.Parse(propertyValue); + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the WhileLoopActionUsage cannot be deserialized"); + } + + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - } - if (deserializeDerivedProperties) - { - DeserializeDtoIncludingDerivedProperties(dtoInstance, jsonElement, logger); - } - else - { - DeserializeDtoExcludingDerivedProperties(dtoInstance, jsonElement, logger); - } - - return dtoInstance; - } - - /// - /// Deserializes properties of a - /// from a , including derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoIncludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("actionDefinition"u8, out var actionDefinitionProperty)) - { - foreach (var arrayItem in actionDefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("actionDefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var actionDefinitionExternalIdProperty)) - { - var propertyValue = actionDefinitionExternalIdProperty.GetString(); + actionDefinitionSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var actionDefinitionValue)) { - dtoInstance.actionDefinition.Add(Guid.Parse(propertyValue)); + dtoInstance.actionDefinition.Add(actionDefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the actionDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + if (reader.ValueTextEquals("aliasIds"u8)) { - var propertyValue = arrayItem.GetString(); + aliasIdsSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - dtoInstance.AliasIds.Add(propertyValue); + var aliasIdsValue = reader.GetString(); + + if (aliasIdsValue != null) + { + dtoInstance.AliasIds.Add(aliasIdsValue); + } } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("bodyAction"u8, out var bodyActionProperty)) - { - if (bodyActionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.bodyAction = Guid.Empty; - logger.LogDebug($"the WhileLoopActionUsage.bodyAction property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("bodyAction"u8)) { - if (bodyActionProperty.TryGetProperty("@id"u8, out var bodyActionExternalIdProperty)) + bodyActionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = bodyActionExternalIdProperty.GetString(); + dtoInstance.bodyAction = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.bodyAction = Guid.Parse(propertyValue); + logger.LogDebug("the WhileLoopActionUsage.bodyAction property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var bodyActionValue)) + { + dtoInstance.bodyAction = bodyActionValue; + } + + continue; } - } - else - { - logger.LogDebug("the bodyAction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("chainingFeature"u8, out var chainingFeatureProperty)) - { - foreach (var arrayItem in chainingFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("chainingFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var chainingFeatureExternalIdProperty)) - { - var propertyValue = chainingFeatureExternalIdProperty.GetString(); + chainingFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var chainingFeatureValue)) { - dtoInstance.chainingFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.chainingFeature.Add(chainingFeatureValue); } } - } - } - else - { - logger.LogDebug("the chainingFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("crossFeature"u8, out var crossFeatureProperty)) - { - if (crossFeatureProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.crossFeature = null; + continue; } - else + + if (reader.ValueTextEquals("crossFeature"u8)) { - if (crossFeatureProperty.TryGetProperty("@id"u8, out var crossFeatureExternalIdProperty)) - { - var propertyValue = crossFeatureExternalIdProperty.GetString(); + crossFeatureSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.crossFeature = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.crossFeature = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var crossFeatureValue)) + { + dtoInstance.crossFeature = crossFeatureValue; } + + continue; } - } - else - { - logger.LogDebug("the crossFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredName"u8)) + { + declaredNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("differencingType"u8, out var differencingTypeProperty)) - { - foreach (var arrayItem in differencingTypeProperty.EnumerateArray()) + continue; + } + + if (reader.ValueTextEquals("declaredShortName"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var differencingTypeExternalIdProperty)) - { - var propertyValue = differencingTypeExternalIdProperty.GetString(); + declaredShortNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.differencingType.Add(Guid.Parse(propertyValue)); - } - } + dtoInstance.DeclaredShortName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the differencingType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("directedUsage"u8, out var directedUsageProperty)) - { - foreach (var arrayItem in directedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("differencingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var directedUsageExternalIdProperty)) - { - var propertyValue = directedUsageExternalIdProperty.GetString(); + differencingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var differencingTypeValue)) { - dtoInstance.directedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.differencingType.Add(differencingTypeValue); } } - } - } - else - { - logger.LogDebug("the directedUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("documentation"u8, out var documentationProperty)) - { - foreach (var arrayItem in documentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("directedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var documentationExternalIdProperty)) - { - var propertyValue = documentationExternalIdProperty.GetString(); + directedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var directedUsageValue)) { - dtoInstance.documentation.Add(Guid.Parse(propertyValue)); + dtoInstance.directedUsage.Add(directedUsageValue); } } - } - } - else - { - logger.LogDebug("the documentation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endFeature"u8, out var endFeatureProperty)) - { - foreach (var arrayItem in endFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("documentation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var endFeatureExternalIdProperty)) - { - var propertyValue = endFeatureExternalIdProperty.GetString(); + documentationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var documentationValue)) { - dtoInstance.endFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.documentation.Add(documentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the endFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("endOwningType"u8, out var endOwningTypeProperty)) - { - if (endOwningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.endOwningType = null; + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - else + + if (reader.ValueTextEquals("endFeature"u8)) { - if (endOwningTypeProperty.TryGetProperty("@id"u8, out var endOwningTypeExternalIdProperty)) - { - var propertyValue = endOwningTypeExternalIdProperty.GetString(); + endFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endFeatureValue)) { - dtoInstance.endOwningType = Guid.Parse(propertyValue); + dtoInstance.endFeature.Add(endFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the endOwningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("feature"u8, out var featureProperty)) - { - foreach (var arrayItem in featureProperty.EnumerateArray()) + if (reader.ValueTextEquals("endOwningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureExternalIdProperty)) + endOwningTypeSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.endOwningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var endOwningTypeValue)) { - var propertyValue = featureExternalIdProperty.GetString(); + dtoInstance.endOwningType = endOwningTypeValue; + } + + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("feature"u8)) + { + featureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureValue)) { - dtoInstance.feature.Add(Guid.Parse(propertyValue)); + dtoInstance.feature.Add(featureValue); } } + + continue; } - } - else - { - logger.LogDebug("the feature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureMembership"u8, out var featureMembershipProperty)) - { - foreach (var arrayItem in featureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("featureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featureMembershipExternalIdProperty)) - { - var propertyValue = featureMembershipExternalIdProperty.GetString(); + featureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureMembershipValue)) { - dtoInstance.featureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.featureMembership.Add(featureMembershipValue); } } - } - } - else - { - logger.LogDebug("the featureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featureTarget"u8, out var featureTargetProperty)) - { - if (featureTargetProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.featureTarget = Guid.Empty; - logger.LogDebug($"the WhileLoopActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); + continue; } - else + + if (reader.ValueTextEquals("featureTarget"u8)) { - if (featureTargetProperty.TryGetProperty("@id"u8, out var featureTargetExternalIdProperty)) + featureTargetSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = featureTargetExternalIdProperty.GetString(); + dtoInstance.featureTarget = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.featureTarget = Guid.Parse(propertyValue); + logger.LogDebug("the WhileLoopActionUsage.featureTarget property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featureTargetValue)) + { + dtoInstance.featureTarget = featureTargetValue; + } + + continue; } - } - else - { - logger.LogDebug("the featureTarget Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("featuringType"u8, out var featuringTypeProperty)) - { - foreach (var arrayItem in featuringTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("featuringType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var featuringTypeExternalIdProperty)) - { - var propertyValue = featuringTypeExternalIdProperty.GetString(); + featuringTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var featuringTypeValue)) { - dtoInstance.featuringType.Add(Guid.Parse(propertyValue)); + dtoInstance.featuringType.Add(featuringTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the featuringType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("importedMembership"u8, out var importedMembershipProperty)) - { - foreach (var arrayItem in importedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("importedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var importedMembershipExternalIdProperty)) - { - var propertyValue = importedMembershipExternalIdProperty.GetString(); + importedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var importedMembershipValue)) { - dtoInstance.importedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.importedMembership.Add(importedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the importedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("individualDefinition"u8, out var individualDefinitionProperty)) - { - if (individualDefinitionProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("individualDefinition"u8)) { - dtoInstance.individualDefinition = null; + individualDefinitionSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.individualDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var individualDefinitionValue)) + { + dtoInstance.individualDefinition = individualDefinitionValue; + } + + continue; } - else + + if (reader.ValueTextEquals("inheritedFeature"u8)) { - if (individualDefinitionProperty.TryGetProperty("@id"u8, out var individualDefinitionExternalIdProperty)) - { - var propertyValue = individualDefinitionExternalIdProperty.GetString(); + inheritedFeatureSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedFeatureValue)) { - dtoInstance.individualDefinition = Guid.Parse(propertyValue); + dtoInstance.inheritedFeature.Add(inheritedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the individualDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedFeature"u8, out var inheritedFeatureProperty)) - { - foreach (var arrayItem in inheritedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("inheritedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedFeatureExternalIdProperty)) - { - var propertyValue = inheritedFeatureExternalIdProperty.GetString(); + inheritedMembershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inheritedMembershipValue)) { - dtoInstance.inheritedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.inheritedMembership.Add(inheritedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("inheritedMembership"u8, out var inheritedMembershipProperty)) - { - foreach (var arrayItem in inheritedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("input"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inheritedMembershipExternalIdProperty)) - { - var propertyValue = inheritedMembershipExternalIdProperty.GetString(); + inputSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var inputValue)) { - dtoInstance.inheritedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.input.Add(inputValue); } } + + continue; } - } - else - { - logger.LogDebug("the inheritedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("input"u8, out var inputProperty)) - { - foreach (var arrayItem in inputProperty.EnumerateArray()) + if (reader.ValueTextEquals("intersectingType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var inputExternalIdProperty)) - { - var propertyValue = inputExternalIdProperty.GetString(); + intersectingTypeSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var intersectingTypeValue)) { - dtoInstance.input.Add(Guid.Parse(propertyValue)); + dtoInstance.intersectingType.Add(intersectingTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the input Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("intersectingType"u8, out var intersectingTypeProperty)) - { - foreach (var arrayItem in intersectingTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("isAbstract"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var intersectingTypeExternalIdProperty)) - { - var propertyValue = intersectingTypeExternalIdProperty.GetString(); + isAbstractSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.intersectingType.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); } + + continue; } - } - else - { - logger.LogDebug("the intersectingType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConjugated"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isConjugatedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isConjugated = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConjugated"u8, out var isConjugatedProperty)) - { - if (isConjugatedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.isConjugated = isConjugatedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConjugated Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isLibraryElement"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isLibraryElementSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isLibraryElement = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isLibraryElement"u8, out var isLibraryElementProperty)) - { - if (isLibraryElementProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.isLibraryElement = isLibraryElementProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isLibraryElement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isReference"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isReferenceSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.isReference = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isReference"u8, out var isReferenceProperty)) - { - if (isReferenceProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.isReference = isReferenceProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isReference Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); - } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + isUniqueSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) - { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isVariation"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsVariation = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("mayTimeVary"u8, out var mayTimeVaryProperty)) - { - if (mayTimeVaryProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("mayTimeVary"u8)) { - dtoInstance.mayTimeVary = mayTimeVaryProperty.GetBoolean(); + mayTimeVarySeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.mayTimeVary = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the mayTimeVary Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("member"u8, out var memberProperty)) - { - foreach (var arrayItem in memberProperty.EnumerateArray()) + if (reader.ValueTextEquals("member"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var memberExternalIdProperty)) - { - var propertyValue = memberExternalIdProperty.GetString(); + memberSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var memberValue)) { - dtoInstance.member.Add(Guid.Parse(propertyValue)); + dtoInstance.member.Add(memberValue); } } + + continue; } - } - else - { - logger.LogDebug("the member Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("membership"u8, out var membershipProperty)) - { - foreach (var arrayItem in membershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("membership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var membershipExternalIdProperty)) - { - var propertyValue = membershipExternalIdProperty.GetString(); + membershipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var membershipValue)) { - dtoInstance.membership.Add(Guid.Parse(propertyValue)); + dtoInstance.membership.Add(membershipValue); } } - } - } - else - { - logger.LogDebug("the membership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("multiplicity"u8, out var multiplicityProperty)) - { - if (multiplicityProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.multiplicity = null; + continue; } - else + + if (reader.ValueTextEquals("multiplicity"u8)) { - if (multiplicityProperty.TryGetProperty("@id"u8, out var multiplicityExternalIdProperty)) - { - var propertyValue = multiplicityExternalIdProperty.GetString(); + multiplicitySeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.multiplicity = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.multiplicity = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var multiplicityValue)) + { + dtoInstance.multiplicity = multiplicityValue; } + + continue; } - } - else - { - logger.LogDebug("the multiplicity Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("name"u8, out var nameProperty)) - { - dtoInstance.name = nameProperty.GetString(); - } - else - { - logger.LogDebug("the name Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("name"u8)) + { + nameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("nestedAction"u8, out var nestedActionProperty)) - { - foreach (var arrayItem in nestedActionProperty.EnumerateArray()) + dtoInstance.name = reader.GetString(); + + continue; + } + + if (reader.ValueTextEquals("nestedAction"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedActionExternalIdProperty)) - { - var propertyValue = nestedActionExternalIdProperty.GetString(); + nestedActionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedActionValue)) { - dtoInstance.nestedAction.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAction.Add(nestedActionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAllocation"u8, out var nestedAllocationProperty)) - { - foreach (var arrayItem in nestedAllocationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAllocation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAllocationExternalIdProperty)) - { - var propertyValue = nestedAllocationExternalIdProperty.GetString(); + nestedAllocationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAllocationValue)) { - dtoInstance.nestedAllocation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAllocation.Add(nestedAllocationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAllocation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAnalysisCase"u8, out var nestedAnalysisCaseProperty)) - { - foreach (var arrayItem in nestedAnalysisCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAnalysisCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAnalysisCaseExternalIdProperty)) - { - var propertyValue = nestedAnalysisCaseExternalIdProperty.GetString(); + nestedAnalysisCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAnalysisCaseValue)) { - dtoInstance.nestedAnalysisCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAnalysisCase.Add(nestedAnalysisCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAnalysisCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedAttribute"u8, out var nestedAttributeProperty)) - { - foreach (var arrayItem in nestedAttributeProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedAttribute"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedAttributeExternalIdProperty)) - { - var propertyValue = nestedAttributeExternalIdProperty.GetString(); + nestedAttributeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedAttributeValue)) { - dtoInstance.nestedAttribute.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedAttribute.Add(nestedAttributeValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedAttribute Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCalculation"u8, out var nestedCalculationProperty)) - { - foreach (var arrayItem in nestedCalculationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCalculation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCalculationExternalIdProperty)) - { - var propertyValue = nestedCalculationExternalIdProperty.GetString(); + nestedCalculationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCalculationValue)) { - dtoInstance.nestedCalculation.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCalculation.Add(nestedCalculationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCalculation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedCase"u8, out var nestedCaseProperty)) - { - foreach (var arrayItem in nestedCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedCaseExternalIdProperty)) - { - var propertyValue = nestedCaseExternalIdProperty.GetString(); + nestedCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedCaseValue)) { - dtoInstance.nestedCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedCase.Add(nestedCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConcern"u8, out var nestedConcernProperty)) - { - foreach (var arrayItem in nestedConcernProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConcern"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConcernExternalIdProperty)) - { - var propertyValue = nestedConcernExternalIdProperty.GetString(); + nestedConcernSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConcernValue)) { - dtoInstance.nestedConcern.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConcern.Add(nestedConcernValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConcern Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConnection"u8, out var nestedConnectionProperty)) - { - foreach (var arrayItem in nestedConnectionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConnection"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConnectionExternalIdProperty)) - { - var propertyValue = nestedConnectionExternalIdProperty.GetString(); + nestedConnectionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConnectionValue)) { - dtoInstance.nestedConnection.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConnection.Add(nestedConnectionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConnection Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedConstraint"u8, out var nestedConstraintProperty)) - { - foreach (var arrayItem in nestedConstraintProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedConstraint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedConstraintExternalIdProperty)) - { - var propertyValue = nestedConstraintExternalIdProperty.GetString(); + nestedConstraintSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedConstraintValue)) { - dtoInstance.nestedConstraint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedConstraint.Add(nestedConstraintValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedConstraint Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedEnumeration"u8, out var nestedEnumerationProperty)) - { - foreach (var arrayItem in nestedEnumerationProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedEnumeration"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedEnumerationExternalIdProperty)) - { - var propertyValue = nestedEnumerationExternalIdProperty.GetString(); + nestedEnumerationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedEnumerationValue)) { - dtoInstance.nestedEnumeration.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedEnumeration.Add(nestedEnumerationValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedEnumeration Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedFlow"u8, out var nestedFlowProperty)) - { - foreach (var arrayItem in nestedFlowProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedFlow"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedFlowExternalIdProperty)) - { - var propertyValue = nestedFlowExternalIdProperty.GetString(); + nestedFlowSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedFlowValue)) { - dtoInstance.nestedFlow.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedFlow.Add(nestedFlowValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedFlow Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedInterface"u8, out var nestedInterfaceProperty)) - { - foreach (var arrayItem in nestedInterfaceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedInterface"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedInterfaceExternalIdProperty)) - { - var propertyValue = nestedInterfaceExternalIdProperty.GetString(); + nestedInterfaceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedInterfaceValue)) { - dtoInstance.nestedInterface.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedInterface.Add(nestedInterfaceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedInterface Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedItem"u8, out var nestedItemProperty)) - { - foreach (var arrayItem in nestedItemProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedItem"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedItemExternalIdProperty)) - { - var propertyValue = nestedItemExternalIdProperty.GetString(); + nestedItemSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedItemValue)) { - dtoInstance.nestedItem.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedItem.Add(nestedItemValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedItem Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedMetadata"u8, out var nestedMetadataProperty)) - { - foreach (var arrayItem in nestedMetadataProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedMetadata"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedMetadataExternalIdProperty)) - { - var propertyValue = nestedMetadataExternalIdProperty.GetString(); + nestedMetadataSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedMetadataValue)) { - dtoInstance.nestedMetadata.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedMetadata.Add(nestedMetadataValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedMetadata Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedOccurrence"u8, out var nestedOccurrenceProperty)) - { - foreach (var arrayItem in nestedOccurrenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedOccurrence"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedOccurrenceExternalIdProperty)) - { - var propertyValue = nestedOccurrenceExternalIdProperty.GetString(); + nestedOccurrenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedOccurrenceValue)) { - dtoInstance.nestedOccurrence.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedOccurrence.Add(nestedOccurrenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedOccurrence Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPart"u8, out var nestedPartProperty)) - { - foreach (var arrayItem in nestedPartProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPart"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPartExternalIdProperty)) - { - var propertyValue = nestedPartExternalIdProperty.GetString(); + nestedPartSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPartValue)) { - dtoInstance.nestedPart.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPart.Add(nestedPartValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPart Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedPort"u8, out var nestedPortProperty)) - { - foreach (var arrayItem in nestedPortProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedPort"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedPortExternalIdProperty)) - { - var propertyValue = nestedPortExternalIdProperty.GetString(); + nestedPortSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedPortValue)) { - dtoInstance.nestedPort.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedPort.Add(nestedPortValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedPort Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedReference"u8, out var nestedReferenceProperty)) - { - foreach (var arrayItem in nestedReferenceProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedReference"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedReferenceExternalIdProperty)) - { - var propertyValue = nestedReferenceExternalIdProperty.GetString(); + nestedReferenceSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedReferenceValue)) { - dtoInstance.nestedReference.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedReference.Add(nestedReferenceValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedReference Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRendering"u8, out var nestedRenderingProperty)) - { - foreach (var arrayItem in nestedRenderingProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRendering"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRenderingExternalIdProperty)) - { - var propertyValue = nestedRenderingExternalIdProperty.GetString(); + nestedRenderingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRenderingValue)) { - dtoInstance.nestedRendering.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRendering.Add(nestedRenderingValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRendering Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedRequirement"u8, out var nestedRequirementProperty)) - { - foreach (var arrayItem in nestedRequirementProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedRequirement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedRequirementExternalIdProperty)) - { - var propertyValue = nestedRequirementExternalIdProperty.GetString(); + nestedRequirementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedRequirementValue)) { - dtoInstance.nestedRequirement.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedRequirement.Add(nestedRequirementValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedRequirement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedState"u8, out var nestedStateProperty)) - { - foreach (var arrayItem in nestedStateProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedState"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedStateExternalIdProperty)) - { - var propertyValue = nestedStateExternalIdProperty.GetString(); + nestedStateSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedStateValue)) { - dtoInstance.nestedState.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedState.Add(nestedStateValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedState Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedTransition"u8, out var nestedTransitionProperty)) - { - foreach (var arrayItem in nestedTransitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedTransition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedTransitionExternalIdProperty)) - { - var propertyValue = nestedTransitionExternalIdProperty.GetString(); + nestedTransitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedTransitionValue)) { - dtoInstance.nestedTransition.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedTransition.Add(nestedTransitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedTransition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUsage"u8, out var nestedUsageProperty)) - { - foreach (var arrayItem in nestedUsageProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUsage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUsageExternalIdProperty)) - { - var propertyValue = nestedUsageExternalIdProperty.GetString(); + nestedUsageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUsageValue)) { - dtoInstance.nestedUsage.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUsage.Add(nestedUsageValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedUseCase"u8, out var nestedUseCaseProperty)) - { - foreach (var arrayItem in nestedUseCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedUseCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedUseCaseExternalIdProperty)) - { - var propertyValue = nestedUseCaseExternalIdProperty.GetString(); + nestedUseCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedUseCaseValue)) { - dtoInstance.nestedUseCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedUseCase.Add(nestedUseCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedUseCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedVerificationCase"u8, out var nestedVerificationCaseProperty)) - { - foreach (var arrayItem in nestedVerificationCaseProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedVerificationCase"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedVerificationCaseExternalIdProperty)) - { - var propertyValue = nestedVerificationCaseExternalIdProperty.GetString(); + nestedVerificationCaseSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedVerificationCaseValue)) { - dtoInstance.nestedVerificationCase.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedVerificationCase.Add(nestedVerificationCaseValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedVerificationCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedView"u8, out var nestedViewProperty)) - { - foreach (var arrayItem in nestedViewProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedView"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewExternalIdProperty)) - { - var propertyValue = nestedViewExternalIdProperty.GetString(); + nestedViewSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewValue)) { - dtoInstance.nestedView.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedView.Add(nestedViewValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedView Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("nestedViewpoint"u8, out var nestedViewpointProperty)) - { - foreach (var arrayItem in nestedViewpointProperty.EnumerateArray()) + if (reader.ValueTextEquals("nestedViewpoint"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var nestedViewpointExternalIdProperty)) - { - var propertyValue = nestedViewpointExternalIdProperty.GetString(); + nestedViewpointSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var nestedViewpointValue)) { - dtoInstance.nestedViewpoint.Add(Guid.Parse(propertyValue)); + dtoInstance.nestedViewpoint.Add(nestedViewpointValue); } } + + continue; } - } - else - { - logger.LogDebug("the nestedViewpoint Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("output"u8, out var outputProperty)) - { - foreach (var arrayItem in outputProperty.EnumerateArray()) + if (reader.ValueTextEquals("output"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var outputExternalIdProperty)) - { - var propertyValue = outputExternalIdProperty.GetString(); + outputSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var outputValue)) { - dtoInstance.output.Add(Guid.Parse(propertyValue)); + dtoInstance.output.Add(outputValue); } } + + continue; } - } - else - { - logger.LogDebug("the output Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedAnnotation"u8, out var ownedAnnotationProperty)) - { - foreach (var arrayItem in ownedAnnotationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedAnnotation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedAnnotationExternalIdProperty)) - { - var propertyValue = ownedAnnotationExternalIdProperty.GetString(); + ownedAnnotationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedAnnotationValue)) { - dtoInstance.ownedAnnotation.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedAnnotation.Add(ownedAnnotationValue); } } - } - } - else - { - logger.LogDebug("the ownedAnnotation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedConjugator"u8, out var ownedConjugatorProperty)) - { - if (ownedConjugatorProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedConjugator = null; + continue; } - else + + if (reader.ValueTextEquals("ownedConjugator"u8)) { - if (ownedConjugatorProperty.TryGetProperty("@id"u8, out var ownedConjugatorExternalIdProperty)) - { - var propertyValue = ownedConjugatorExternalIdProperty.GetString(); + ownedConjugatorSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedConjugator = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedConjugator = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedConjugatorValue)) + { + dtoInstance.ownedConjugator = ownedConjugatorValue; } + + continue; } - } - else - { - logger.LogDebug("the ownedConjugator Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedCrossSubsetting"u8, out var ownedCrossSubsettingProperty)) - { - if (ownedCrossSubsettingProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("ownedCrossSubsetting"u8)) { - dtoInstance.ownedCrossSubsetting = null; + ownedCrossSubsettingSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedCrossSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedCrossSubsettingValue)) + { + dtoInstance.ownedCrossSubsetting = ownedCrossSubsettingValue; + } + + continue; } - else + + if (reader.ValueTextEquals("ownedDifferencing"u8)) { - if (ownedCrossSubsettingProperty.TryGetProperty("@id"u8, out var ownedCrossSubsettingExternalIdProperty)) - { - var propertyValue = ownedCrossSubsettingExternalIdProperty.GetString(); + ownedDifferencingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDifferencingValue)) { - dtoInstance.ownedCrossSubsetting = Guid.Parse(propertyValue); + dtoInstance.ownedDifferencing.Add(ownedDifferencingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedCrossSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDifferencing"u8, out var ownedDifferencingProperty)) - { - foreach (var arrayItem in ownedDifferencingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedDisjoining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDifferencingExternalIdProperty)) - { - var propertyValue = ownedDifferencingExternalIdProperty.GetString(); + ownedDisjoiningSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedDisjoiningValue)) { - dtoInstance.ownedDifferencing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedDisjoining.Add(ownedDisjoiningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDifferencing Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedDisjoining"u8, out var ownedDisjoiningProperty)) - { - foreach (var arrayItem in ownedDisjoiningProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedElement"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedDisjoiningExternalIdProperty)) - { - var propertyValue = ownedDisjoiningExternalIdProperty.GetString(); + ownedElementSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedElementValue)) { - dtoInstance.ownedDisjoining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedElement.Add(ownedElementValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedDisjoining Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedElement"u8, out var ownedElementProperty)) - { - foreach (var arrayItem in ownedElementProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedEndFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedElementExternalIdProperty)) - { - var propertyValue = ownedElementExternalIdProperty.GetString(); + ownedEndFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedEndFeatureValue)) { - dtoInstance.ownedElement.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedEndFeature.Add(ownedEndFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedElement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedEndFeature"u8, out var ownedEndFeatureProperty)) - { - foreach (var arrayItem in ownedEndFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeature"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedEndFeatureExternalIdProperty)) - { - var propertyValue = ownedEndFeatureExternalIdProperty.GetString(); + ownedFeatureSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureValue)) { - dtoInstance.ownedEndFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeature.Add(ownedFeatureValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedEndFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeature"u8, out var ownedFeatureProperty)) - { - foreach (var arrayItem in ownedFeatureProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureChaining"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureExternalIdProperty)) - { - var propertyValue = ownedFeatureExternalIdProperty.GetString(); + ownedFeatureChainingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureChainingValue)) { - dtoInstance.ownedFeature.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureChaining.Add(ownedFeatureChainingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureChaining"u8, out var ownedFeatureChainingProperty)) - { - foreach (var arrayItem in ownedFeatureChainingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureInverting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureChainingExternalIdProperty)) - { - var propertyValue = ownedFeatureChainingExternalIdProperty.GetString(); + ownedFeatureInvertingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureInvertingValue)) { - dtoInstance.ownedFeatureChaining.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureInverting.Add(ownedFeatureInvertingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureChaining Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureInverting"u8, out var ownedFeatureInvertingProperty)) - { - foreach (var arrayItem in ownedFeatureInvertingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedFeatureMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureInvertingExternalIdProperty)) - { - var propertyValue = ownedFeatureInvertingExternalIdProperty.GetString(); + ownedFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedFeatureMembershipValue)) { - dtoInstance.ownedFeatureInverting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedFeatureMembership.Add(ownedFeatureMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureInverting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedFeatureMembership"u8, out var ownedFeatureMembershipProperty)) - { - foreach (var arrayItem in ownedFeatureMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedImport"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedFeatureMembershipExternalIdProperty)) - { - var propertyValue = ownedFeatureMembershipExternalIdProperty.GetString(); + ownedImportSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedImportValue)) { - dtoInstance.ownedFeatureMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedImport.Add(ownedImportValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedFeatureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedImport"u8, out var ownedImportProperty)) - { - foreach (var arrayItem in ownedImportProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedIntersecting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedImportExternalIdProperty)) - { - var propertyValue = ownedImportExternalIdProperty.GetString(); + ownedIntersectingSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedIntersectingValue)) { - dtoInstance.ownedImport.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedIntersecting.Add(ownedIntersectingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedImport Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedIntersecting"u8, out var ownedIntersectingProperty)) - { - foreach (var arrayItem in ownedIntersectingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMember"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedIntersectingExternalIdProperty)) - { - var propertyValue = ownedIntersectingExternalIdProperty.GetString(); + ownedMemberSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMemberValue)) { - dtoInstance.ownedIntersecting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMember.Add(ownedMemberValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedIntersecting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMember"u8, out var ownedMemberProperty)) - { - foreach (var arrayItem in ownedMemberProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedMembership"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMemberExternalIdProperty)) - { - var propertyValue = ownedMemberExternalIdProperty.GetString(); + ownedMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedMembershipValue)) { - dtoInstance.ownedMember.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedMembership.Add(ownedMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMember Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedMembership"u8, out var ownedMembershipProperty)) - { - foreach (var arrayItem in ownedMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedRedefinition"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedMembershipExternalIdProperty)) - { - var propertyValue = ownedMembershipExternalIdProperty.GetString(); + ownedRedefinitionSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRedefinitionValue)) { - dtoInstance.ownedMembership.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedRedefinition.Add(ownedRedefinitionValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRedefinition"u8, out var ownedRedefinitionProperty)) - { - foreach (var arrayItem in ownedRedefinitionProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedReferenceSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRedefinitionExternalIdProperty)) - { - var propertyValue = ownedRedefinitionExternalIdProperty.GetString(); + ownedReferenceSubsettingSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedRedefinition.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.ownedReferenceSubsetting = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedReferenceSubsettingValue)) + { + dtoInstance.ownedReferenceSubsetting = ownedReferenceSubsettingValue; } - } - } - else - { - logger.LogDebug("the ownedRedefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedReferenceSubsetting"u8, out var ownedReferenceSubsettingProperty)) - { - if (ownedReferenceSubsettingProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.ownedReferenceSubsetting = null; + continue; } - else + + if (reader.ValueTextEquals("ownedRelationship"u8)) { - if (ownedReferenceSubsettingProperty.TryGetProperty("@id"u8, out var ownedReferenceSubsettingExternalIdProperty)) - { - var propertyValue = ownedReferenceSubsettingExternalIdProperty.GetString(); + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.ownedReferenceSubsetting = Guid.Parse(propertyValue); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSpecialization"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) - { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + ownedSpecializationSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSpecializationValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSpecialization.Add(ownedSpecializationValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSpecialization"u8, out var ownedSpecializationProperty)) - { - foreach (var arrayItem in ownedSpecializationProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedSubsetting"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSpecializationExternalIdProperty)) - { - var propertyValue = ownedSpecializationExternalIdProperty.GetString(); + ownedSubsettingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedSubsettingValue)) { - dtoInstance.ownedSpecialization.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedSubsetting.Add(ownedSubsettingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSpecialization Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedSubsetting"u8, out var ownedSubsettingProperty)) - { - foreach (var arrayItem in ownedSubsettingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTypeFeaturing"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedSubsettingExternalIdProperty)) - { - var propertyValue = ownedSubsettingExternalIdProperty.GetString(); + ownedTypeFeaturingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypeFeaturingValue)) { - dtoInstance.ownedSubsetting.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTypeFeaturing.Add(ownedTypeFeaturingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTypeFeaturing"u8, out var ownedTypeFeaturingProperty)) - { - foreach (var arrayItem in ownedTypeFeaturingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedTyping"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypeFeaturingExternalIdProperty)) - { - var propertyValue = ownedTypeFeaturingExternalIdProperty.GetString(); + ownedTypingSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedTypingValue)) { - dtoInstance.ownedTypeFeaturing.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedTyping.Add(ownedTypingValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTypeFeaturing Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedTyping"u8, out var ownedTypingProperty)) - { - foreach (var arrayItem in ownedTypingProperty.EnumerateArray()) + if (reader.ValueTextEquals("ownedUnioning"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedTypingExternalIdProperty)) - { - var propertyValue = ownedTypingExternalIdProperty.GetString(); + ownedUnioningSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedUnioningValue)) { - dtoInstance.ownedTyping.Add(Guid.Parse(propertyValue)); + dtoInstance.ownedUnioning.Add(ownedUnioningValue); } } + + continue; } - } - else - { - logger.LogDebug("the ownedTyping Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedUnioning"u8, out var ownedUnioningProperty)) - { - foreach (var arrayItem in ownedUnioningProperty.EnumerateArray()) + if (reader.ValueTextEquals("owner"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedUnioningExternalIdProperty)) - { - var propertyValue = ownedUnioningExternalIdProperty.GetString(); + ownerSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.ownedUnioning.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owner = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownerValue)) + { + dtoInstance.owner = ownerValue; } - } - } - else - { - logger.LogDebug("the ownedUnioning Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owner"u8, out var ownerProperty)) - { - if (ownerProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owner = null; + continue; } - else + + if (reader.ValueTextEquals("owningDefinition"u8)) { - if (ownerProperty.TryGetProperty("@id"u8, out var ownerExternalIdProperty)) - { - var propertyValue = ownerExternalIdProperty.GetString(); + owningDefinitionSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owner = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningDefinition = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningDefinitionValue)) + { + dtoInstance.owningDefinition = owningDefinitionValue; } - } - } - else - { - logger.LogDebug("the owner Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningDefinition"u8, out var owningDefinitionProperty)) - { - if (owningDefinitionProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningDefinition = null; + continue; } - else + + if (reader.ValueTextEquals("owningFeatureMembership"u8)) { - if (owningDefinitionProperty.TryGetProperty("@id"u8, out var owningDefinitionExternalIdProperty)) - { - var propertyValue = owningDefinitionExternalIdProperty.GetString(); + owningFeatureMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningDefinition = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningFeatureMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningFeatureMembershipValue)) + { + dtoInstance.owningFeatureMembership = owningFeatureMembershipValue; } - } - } - else - { - logger.LogDebug("the owningDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningFeatureMembership"u8, out var owningFeatureMembershipProperty)) - { - if (owningFeatureMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningFeatureMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningMembership"u8)) { - if (owningFeatureMembershipProperty.TryGetProperty("@id"u8, out var owningFeatureMembershipExternalIdProperty)) - { - var propertyValue = owningFeatureMembershipExternalIdProperty.GetString(); + owningMembershipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningFeatureMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningMembership = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningMembershipValue)) + { + dtoInstance.owningMembership = owningMembershipValue; } - } - } - else - { - logger.LogDebug("the owningFeatureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningMembership"u8, out var owningMembershipProperty)) - { - if (owningMembershipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.owningMembership = null; + continue; } - else + + if (reader.ValueTextEquals("owningNamespace"u8)) { - if (owningMembershipProperty.TryGetProperty("@id"u8, out var owningMembershipExternalIdProperty)) - { - var propertyValue = owningMembershipExternalIdProperty.GetString(); + owningNamespaceSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningMembership = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningNamespace = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningNamespaceValue)) + { + dtoInstance.owningNamespace = owningNamespaceValue; } + + continue; } - } - else - { - logger.LogDebug("the owningMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningNamespace"u8, out var owningNamespaceProperty)) - { - if (owningNamespaceProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningRelationship"u8)) { - dtoInstance.owningNamespace = null; + owningRelationshipSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - else + + if (reader.ValueTextEquals("owningType"u8)) { - if (owningNamespaceProperty.TryGetProperty("@id"u8, out var owningNamespaceExternalIdProperty)) - { - var propertyValue = owningNamespaceExternalIdProperty.GetString(); + owningTypeSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningNamespace = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningType = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningTypeValue)) + { + dtoInstance.owningType = owningTypeValue; } + + continue; } - } - else - { - logger.LogDebug("the owningNamespace Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("owningUsage"u8)) { - dtoInstance.OwningRelationship = null; + owningUsageSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.owningUsage = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningUsageValue)) + { + dtoInstance.owningUsage = owningUsageValue; + } + + continue; } - else + + if (reader.ValueTextEquals("parameter"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + parameterSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); - if (propertyValue != null) + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var parameterValue)) { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); + dtoInstance.parameter.Add(parameterValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningType"u8, out var owningTypeProperty)) - { - if (owningTypeProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("portionKind"u8)) { - dtoInstance.owningType = null; + portionKindSeen = true; + reader.Read(); + + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - else + + if (reader.ValueTextEquals("qualifiedName"u8)) { - if (owningTypeProperty.TryGetProperty("@id"u8, out var owningTypeExternalIdProperty)) - { - var propertyValue = owningTypeExternalIdProperty.GetString(); + qualifiedNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.owningType = Guid.Parse(propertyValue); - } - } + dtoInstance.qualifiedName = reader.GetString(); + + continue; } - } - else - { - logger.LogDebug("the owningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningUsage"u8, out var owningUsageProperty)) - { - if (owningUsageProperty.ValueKind == JsonValueKind.Null) + if (reader.ValueTextEquals("shortName"u8)) { - dtoInstance.owningUsage = null; + shortNameSeen = true; + reader.Read(); + + dtoInstance.shortName = reader.GetString(); + + continue; } - else + + if (reader.ValueTextEquals("textualRepresentation"u8)) { - if (owningUsageProperty.TryGetProperty("@id"u8, out var owningUsageExternalIdProperty)) - { - var propertyValue = owningUsageExternalIdProperty.GetString(); + textualRepresentationSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var textualRepresentationValue)) { - dtoInstance.owningUsage = Guid.Parse(propertyValue); + dtoInstance.textualRepresentation.Add(textualRepresentationValue); } } + + continue; } - } - else - { - logger.LogDebug("the owningUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("parameter"u8, out var parameterProperty)) - { - foreach (var arrayItem in parameterProperty.EnumerateArray()) + if (reader.ValueTextEquals("unioningType"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var parameterExternalIdProperty)) - { - var propertyValue = parameterExternalIdProperty.GetString(); + unioningTypeSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var unioningTypeValue)) { - dtoInstance.parameter.Add(Guid.Parse(propertyValue)); + dtoInstance.unioningType.Add(unioningTypeValue); } } + + continue; } - } - else - { - logger.LogDebug("the parameter Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("untilArgument"u8)) + { + untilArgumentSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("qualifiedName"u8, out var qualifiedNameProperty)) - { - dtoInstance.qualifiedName = qualifiedNameProperty.GetString(); - } - else - { - logger.LogDebug("the qualifiedName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.untilArgument = null; + } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var untilArgumentValue)) + { + dtoInstance.untilArgument = untilArgumentValue; + } - if (jsonElement.TryGetProperty("shortName"u8, out var shortNameProperty)) - { - dtoInstance.shortName = shortNameProperty.GetString(); - } - else - { - logger.LogDebug("the shortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("textualRepresentation"u8, out var textualRepresentationProperty)) - { - foreach (var arrayItem in textualRepresentationProperty.EnumerateArray()) + if (reader.ValueTextEquals("usage"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var textualRepresentationExternalIdProperty)) - { - var propertyValue = textualRepresentationExternalIdProperty.GetString(); + usageSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var usageValue)) { - dtoInstance.textualRepresentation.Add(Guid.Parse(propertyValue)); + dtoInstance.usage.Add(usageValue); } } + + continue; } - } - else - { - logger.LogDebug("the textualRepresentation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("unioningType"u8, out var unioningTypeProperty)) - { - foreach (var arrayItem in unioningTypeProperty.EnumerateArray()) + if (reader.ValueTextEquals("variant"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var unioningTypeExternalIdProperty)) - { - var propertyValue = unioningTypeExternalIdProperty.GetString(); + variantSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantValue)) { - dtoInstance.unioningType.Add(Guid.Parse(propertyValue)); + dtoInstance.variant.Add(variantValue); } } - } - } - else - { - logger.LogDebug("the unioningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("untilArgument"u8, out var untilArgumentProperty)) - { - if (untilArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.untilArgument = null; + continue; } - else + + if (reader.ValueTextEquals("variantMembership"u8)) { - if (untilArgumentProperty.TryGetProperty("@id"u8, out var untilArgumentExternalIdProperty)) - { - var propertyValue = untilArgumentExternalIdProperty.GetString(); + variantMembershipSeen = true; + reader.Read(); - if (propertyValue != null) + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var variantMembershipValue)) { - dtoInstance.untilArgument = Guid.Parse(propertyValue); + dtoInstance.variantMembership.Add(variantMembershipValue); } } + + continue; } - } - else - { - logger.LogDebug("the untilArgument Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("usage"u8, out var usageProperty)) - { - foreach (var arrayItem in usageProperty.EnumerateArray()) + if (reader.ValueTextEquals("whileArgument"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var usageExternalIdProperty)) + whileArgumentSeen = true; + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) { - var propertyValue = usageExternalIdProperty.GetString(); + dtoInstance.whileArgument = Guid.Empty; - if (propertyValue != null) + if (logger.IsEnabled(LogLevel.Debug)) { - dtoInstance.usage.Add(Guid.Parse(propertyValue)); + logger.LogDebug("the WhileLoopActionUsage.whileArgument property was not found in the Json. The value is set to Guid.Empty"); } } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var whileArgumentValue)) + { + dtoInstance.whileArgument = whileArgumentValue; + } + + continue; } - } - else - { - logger.LogDebug("the usage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("variant"u8, out var variantProperty)) + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) { - foreach (var arrayItem in variantProperty.EnumerateArray()) + if (!actionDefinitionSeen) { - if (arrayItem.TryGetProperty("@id"u8, out var variantExternalIdProperty)) - { - var propertyValue = variantExternalIdProperty.GetString(); - - if (propertyValue != null) - { - dtoInstance.variant.Add(Guid.Parse(propertyValue)); - } - } + logger.LogDebug("the actionDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!bodyActionSeen) + { + logger.LogDebug("the bodyAction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!chainingFeatureSeen) + { + logger.LogDebug("the chainingFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!crossFeatureSeen) + { + logger.LogDebug("the crossFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!differencingTypeSeen) + { + logger.LogDebug("the differencingType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directedUsageSeen) + { + logger.LogDebug("the directedUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!documentationSeen) + { + logger.LogDebug("the documentation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!endFeatureSeen) + { + logger.LogDebug("the endFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!endOwningTypeSeen) + { + logger.LogDebug("the endOwningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureSeen) + { + logger.LogDebug("the feature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureMembershipSeen) + { + logger.LogDebug("the featureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featureTargetSeen) + { + logger.LogDebug("the featureTarget Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!featuringTypeSeen) + { + logger.LogDebug("the featuringType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!importedMembershipSeen) + { + logger.LogDebug("the importedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!individualDefinitionSeen) + { + logger.LogDebug("the individualDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedFeatureSeen) + { + logger.LogDebug("the inheritedFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inheritedMembershipSeen) + { + logger.LogDebug("the inheritedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!inputSeen) + { + logger.LogDebug("the input Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!intersectingTypeSeen) + { + logger.LogDebug("the intersectingType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConjugatedSeen) + { + logger.LogDebug("the isConjugated Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isLibraryElementSeen) + { + logger.LogDebug("the isLibraryElement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isReferenceSeen) + { + logger.LogDebug("the isReference Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!mayTimeVarySeen) + { + logger.LogDebug("the mayTimeVary Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!memberSeen) + { + logger.LogDebug("the member Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!membershipSeen) + { + logger.LogDebug("the membership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!multiplicitySeen) + { + logger.LogDebug("the multiplicity Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nameSeen) + { + logger.LogDebug("the name Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedActionSeen) + { + logger.LogDebug("the nestedAction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAllocationSeen) + { + logger.LogDebug("the nestedAllocation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAnalysisCaseSeen) + { + logger.LogDebug("the nestedAnalysisCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedAttributeSeen) + { + logger.LogDebug("the nestedAttribute Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCalculationSeen) + { + logger.LogDebug("the nestedCalculation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedCaseSeen) + { + logger.LogDebug("the nestedCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConcernSeen) + { + logger.LogDebug("the nestedConcern Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConnectionSeen) + { + logger.LogDebug("the nestedConnection Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedConstraintSeen) + { + logger.LogDebug("the nestedConstraint Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedEnumerationSeen) + { + logger.LogDebug("the nestedEnumeration Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedFlowSeen) + { + logger.LogDebug("the nestedFlow Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedInterfaceSeen) + { + logger.LogDebug("the nestedInterface Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedItemSeen) + { + logger.LogDebug("the nestedItem Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedMetadataSeen) + { + logger.LogDebug("the nestedMetadata Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedOccurrenceSeen) + { + logger.LogDebug("the nestedOccurrence Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPartSeen) + { + logger.LogDebug("the nestedPart Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedPortSeen) + { + logger.LogDebug("the nestedPort Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedReferenceSeen) + { + logger.LogDebug("the nestedReference Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRenderingSeen) + { + logger.LogDebug("the nestedRendering Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedRequirementSeen) + { + logger.LogDebug("the nestedRequirement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedStateSeen) + { + logger.LogDebug("the nestedState Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedTransitionSeen) + { + logger.LogDebug("the nestedTransition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUsageSeen) + { + logger.LogDebug("the nestedUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedUseCaseSeen) + { + logger.LogDebug("the nestedUseCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedVerificationCaseSeen) + { + logger.LogDebug("the nestedVerificationCase Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewSeen) + { + logger.LogDebug("the nestedView Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!nestedViewpointSeen) + { + logger.LogDebug("the nestedViewpoint Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!outputSeen) + { + logger.LogDebug("the output Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedAnnotationSeen) + { + logger.LogDebug("the ownedAnnotation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedConjugatorSeen) + { + logger.LogDebug("the ownedConjugator Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedCrossSubsettingSeen) + { + logger.LogDebug("the ownedCrossSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDifferencingSeen) + { + logger.LogDebug("the ownedDifferencing Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedDisjoiningSeen) + { + logger.LogDebug("the ownedDisjoining Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedElementSeen) + { + logger.LogDebug("the ownedElement Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedEndFeatureSeen) + { + logger.LogDebug("the ownedEndFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureSeen) + { + logger.LogDebug("the ownedFeature Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureChainingSeen) + { + logger.LogDebug("the ownedFeatureChaining Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureInvertingSeen) + { + logger.LogDebug("the ownedFeatureInverting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedFeatureMembershipSeen) + { + logger.LogDebug("the ownedFeatureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedImportSeen) + { + logger.LogDebug("the ownedImport Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedIntersectingSeen) + { + logger.LogDebug("the ownedIntersecting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMemberSeen) + { + logger.LogDebug("the ownedMember Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedMembershipSeen) + { + logger.LogDebug("the ownedMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRedefinitionSeen) + { + logger.LogDebug("the ownedRedefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedReferenceSubsettingSeen) + { + logger.LogDebug("the ownedReferenceSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSpecializationSeen) + { + logger.LogDebug("the ownedSpecialization Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedSubsettingSeen) + { + logger.LogDebug("the ownedSubsetting Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypeFeaturingSeen) + { + logger.LogDebug("the ownedTypeFeaturing Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedTypingSeen) + { + logger.LogDebug("the ownedTyping Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedUnioningSeen) + { + logger.LogDebug("the ownedUnioning Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownerSeen) + { + logger.LogDebug("the owner Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningDefinitionSeen) + { + logger.LogDebug("the owningDefinition Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningFeatureMembershipSeen) + { + logger.LogDebug("the owningFeatureMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningMembershipSeen) + { + logger.LogDebug("the owningMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningNamespaceSeen) + { + logger.LogDebug("the owningNamespace Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningTypeSeen) + { + logger.LogDebug("the owningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningUsageSeen) + { + logger.LogDebug("the owningUsage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!parameterSeen) + { + logger.LogDebug("the parameter Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!qualifiedNameSeen) + { + logger.LogDebug("the qualifiedName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!shortNameSeen) + { + logger.LogDebug("the shortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!textualRepresentationSeen) + { + logger.LogDebug("the textualRepresentation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!unioningTypeSeen) + { + logger.LogDebug("the unioningType Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); } - } - else + if (!untilArgumentSeen) + { + logger.LogDebug("the untilArgument Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!usageSeen) + { + logger.LogDebug("the usage Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!variantSeen) + { + logger.LogDebug("the variant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!variantMembershipSeen) + { + logger.LogDebug("the variantMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!whileArgumentSeen) + { + logger.LogDebug("the whileArgument Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + } + } + + /// + /// Deserializes properties of a + /// from a , excluding derived properties + /// + /// + /// The instance holding deserialized values + /// + /// + /// The positioned on the of the + /// json object + /// + /// + /// The to produce logging statement + /// + private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage dtoInstance, ref Utf8JsonReader reader, ILogger logger) + { + var aliasIdsSeen = false; + var declaredNameSeen = false; + var declaredShortNameSeen = false; + var directionSeen = false; + var elementIdSeen = false; + var isAbstractSeen = false; + var isCompositeSeen = false; + var isConstantSeen = false; + var isDerivedSeen = false; + var isEndSeen = false; + var isImpliedIncludedSeen = false; + var isIndividualSeen = false; + var isOrderedSeen = false; + var isPortionSeen = false; + var isSufficientSeen = false; + var isUniqueSeen = false; + var isVariationSeen = false; + var ownedRelationshipSeen = false; + var owningRelationshipSeen = false; + var portionKindSeen = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) { - logger.LogDebug("the variant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name in the WhileLoopActionUsage json object."); + } - if (jsonElement.TryGetProperty("variantMembership"u8, out var variantMembershipProperty)) - { - foreach (var arrayItem in variantMembershipProperty.EnumerateArray()) + if (reader.ValueTextEquals("@id"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var variantMembershipExternalIdProperty)) - { - var propertyValue = variantMembershipExternalIdProperty.GetString(); + reader.Read(); - if (propertyValue != null) - { - dtoInstance.variantMembership.Add(Guid.Parse(propertyValue)); - } + if (reader.TokenType == JsonTokenType.Null) + { + throw new JsonException("The @id property is not present, the WhileLoopActionUsage cannot be deserialized"); } - } - } - else - { - logger.LogDebug("the variantMembership Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("whileArgument"u8, out var whileArgumentProperty)) - { - if (whileArgumentProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.whileArgument = Guid.Empty; - logger.LogDebug($"the WhileLoopActionUsage.whileArgument property was not found in the Json. The value is set to Guid.Empty"); + dtoInstance.Id = Utf8JsonReaderHelper.ReadGuid(ref reader); + continue; } - else + + if (reader.ValueTextEquals("aliasIds"u8)) { - if (whileArgumentProperty.TryGetProperty("@id"u8, out var whileArgumentExternalIdProperty)) + aliasIdsSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { - var propertyValue = whileArgumentExternalIdProperty.GetString(); + var aliasIdsValue = reader.GetString(); - if (propertyValue != null) + if (aliasIdsValue != null) { - dtoInstance.whileArgument = Guid.Parse(propertyValue); + dtoInstance.AliasIds.Add(aliasIdsValue); } } + + continue; } - } - else - { - logger.LogDebug("the whileArgument Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - - } - - /// - /// Deserializes properties of a - /// from a , excluding derived properties - /// - /// - /// The instance holding deserialized values - /// - /// - /// The that contains the json object - /// - /// - /// The to produce logging statement - /// - private static void DeserializeDtoExcludingDerivedProperties(SysML2.NET.Core.DTO.Systems.Actions.WhileLoopActionUsage dtoInstance, JsonElement jsonElement, ILogger logger) - { - if (jsonElement.TryGetProperty("aliasIds"u8, out var aliasIdsProperty)) - { - foreach (var arrayItem in aliasIdsProperty.EnumerateArray()) + + if (reader.ValueTextEquals("declaredName"u8)) { - var propertyValue = arrayItem.GetString(); + declaredNameSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.AliasIds.Add(propertyValue); - } - } - } - else - { - logger.LogDebug("the aliasIds Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredName = reader.GetString(); - if (jsonElement.TryGetProperty("declaredName"u8, out var declaredNameProperty)) - { - dtoInstance.DeclaredName = declaredNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + continue; + } - if (jsonElement.TryGetProperty("declaredShortName"u8, out var declaredShortNameProperty)) - { - dtoInstance.DeclaredShortName = declaredShortNameProperty.GetString(); - } - else - { - logger.LogDebug("the declaredShortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("declaredShortName"u8)) + { + declaredShortNameSeen = true; + reader.Read(); - if (jsonElement.TryGetProperty("direction"u8, out var directionProperty)) - { - dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(directionProperty.GetString()); - } - else - { - logger.LogDebug("the direction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + dtoInstance.DeclaredShortName = reader.GetString(); - if (jsonElement.TryGetProperty("elementId"u8, out var elementIdProperty)) - { - var propertyValue = elementIdProperty.GetString(); + continue; + } - if (propertyValue != null) + if (reader.ValueTextEquals("direction"u8)) { - dtoInstance.ElementId = propertyValue; + directionSeen = true; + reader.Read(); + + dtoInstance.Direction = FeatureDirectionKindDeSerializer.DeserializeNullable(reader.GetString()); + + continue; } - } - else - { - logger.LogDebug("the elementId Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isAbstract"u8, out var isAbstractProperty)) - { - if (isAbstractProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("elementId"u8)) { - dtoInstance.IsAbstract = isAbstractProperty.GetBoolean(); + elementIdSeen = true; + reader.Read(); + + var elementIdValue = reader.GetString(); + + if (elementIdValue != null) + { + dtoInstance.ElementId = elementIdValue; + } + + continue; } - } - else - { - logger.LogDebug("the isAbstract Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isComposite"u8, out var isCompositeProperty)) - { - if (isCompositeProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isAbstract"u8)) { - dtoInstance.IsComposite = isCompositeProperty.GetBoolean(); + isAbstractSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsAbstract = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isComposite Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isConstant"u8, out var isConstantProperty)) - { - if (isConstantProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isComposite"u8)) { - dtoInstance.IsConstant = isConstantProperty.GetBoolean(); + isCompositeSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsComposite = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isConstant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isDerived"u8, out var isDerivedProperty)) - { - if (isDerivedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isConstant"u8)) { - dtoInstance.IsDerived = isDerivedProperty.GetBoolean(); + isConstantSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsConstant = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isDerived Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isEnd"u8, out var isEndProperty)) - { - if (isEndProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isDerived"u8)) { - dtoInstance.IsEnd = isEndProperty.GetBoolean(); + isDerivedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsDerived = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isEnd Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isImpliedIncluded"u8, out var isImpliedIncludedProperty)) - { - if (isImpliedIncludedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isEnd"u8)) { - dtoInstance.IsImpliedIncluded = isImpliedIncludedProperty.GetBoolean(); + isEndSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsEnd = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isImpliedIncluded Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isIndividual"u8, out var isIndividualProperty)) - { - if (isIndividualProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isImpliedIncluded"u8)) { - dtoInstance.IsIndividual = isIndividualProperty.GetBoolean(); + isImpliedIncludedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsImpliedIncluded = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isIndividual Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isOrdered"u8, out var isOrderedProperty)) - { - if (isOrderedProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isIndividual"u8)) { - dtoInstance.IsOrdered = isOrderedProperty.GetBoolean(); + isIndividualSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsIndividual = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isOrdered Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isPortion"u8, out var isPortionProperty)) - { - if (isPortionProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isOrdered"u8)) { - dtoInstance.IsPortion = isPortionProperty.GetBoolean(); + isOrderedSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsOrdered = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isPortion Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isSufficient"u8, out var isSufficientProperty)) - { - if (isSufficientProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isPortion"u8)) { - dtoInstance.IsSufficient = isSufficientProperty.GetBoolean(); + isPortionSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsPortion = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isSufficient Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isUnique"u8, out var isUniqueProperty)) - { - if (isUniqueProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isSufficient"u8)) { - dtoInstance.IsUnique = isUniqueProperty.GetBoolean(); + isSufficientSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsSufficient = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isUnique Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("isVariation"u8, out var isVariationProperty)) - { - if (isVariationProperty.ValueKind != JsonValueKind.Null) + if (reader.ValueTextEquals("isUnique"u8)) { - dtoInstance.IsVariation = isVariationProperty.GetBoolean(); + isUniqueSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + dtoInstance.IsUnique = reader.GetBoolean(); + } + + continue; } - } - else - { - logger.LogDebug("the isVariation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("ownedRelationship"u8, out var ownedRelationshipProperty)) - { - foreach (var arrayItem in ownedRelationshipProperty.EnumerateArray()) + if (reader.ValueTextEquals("isVariation"u8)) { - if (arrayItem.TryGetProperty("@id"u8, out var ownedRelationshipExternalIdProperty)) + isVariationSeen = true; + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) { - var propertyValue = ownedRelationshipExternalIdProperty.GetString(); + dtoInstance.IsVariation = reader.GetBoolean(); + } - if (propertyValue != null) + continue; + } + + if (reader.ValueTextEquals("ownedRelationship"u8)) + { + ownedRelationshipSeen = true; + reader.Read(); + + Utf8JsonReaderHelper.ExpectArrayStart(ref reader); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var ownedRelationshipValue)) { - dtoInstance.OwnedRelationship.Add(Guid.Parse(propertyValue)); + dtoInstance.OwnedRelationship.Add(ownedRelationshipValue); } } - } - } - else - { - logger.LogDebug("the ownedRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("owningRelationship"u8, out var owningRelationshipProperty)) - { - if (owningRelationshipProperty.ValueKind == JsonValueKind.Null) - { - dtoInstance.OwningRelationship = null; + continue; } - else + + if (reader.ValueTextEquals("owningRelationship"u8)) { - if (owningRelationshipProperty.TryGetProperty("@id"u8, out var owningRelationshipExternalIdProperty)) - { - var propertyValue = owningRelationshipExternalIdProperty.GetString(); + owningRelationshipSeen = true; + reader.Read(); - if (propertyValue != null) - { - dtoInstance.OwningRelationship = Guid.Parse(propertyValue); - } + if (reader.TokenType == JsonTokenType.Null) + { + dtoInstance.OwningRelationship = null; } + else if (Utf8JsonReaderHelper.TryReadReferenceIdentifier(ref reader, out var owningRelationshipValue)) + { + dtoInstance.OwningRelationship = owningRelationshipValue; + } + + continue; } - } - else - { - logger.LogDebug("the owningRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } - if (jsonElement.TryGetProperty("portionKind"u8, out var portionKindProperty)) - { - dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(portionKindProperty.GetString()); - } - else - { - logger.LogDebug("the portionKind Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); - } + if (reader.ValueTextEquals("portionKind"u8)) + { + portionKindSeen = true; + reader.Read(); - } - } -} + dtoInstance.PortionKind = PortionKindDeSerializer.DeserializeNullable(reader.GetString()); -// ------------------------------------------------------------------------------------------------ -// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- -// ------------------------------------------------------------------------------------------------ + continue; + } + + + reader.Read(); + reader.Skip(); + } + + if (logger.IsEnabled(LogLevel.Debug)) + { + if (!aliasIdsSeen) + { + logger.LogDebug("the aliasIds Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredNameSeen) + { + logger.LogDebug("the declaredName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!declaredShortNameSeen) + { + logger.LogDebug("the declaredShortName Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!directionSeen) + { + logger.LogDebug("the direction Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!elementIdSeen) + { + logger.LogDebug("the elementId Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isAbstractSeen) + { + logger.LogDebug("the isAbstract Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isCompositeSeen) + { + logger.LogDebug("the isComposite Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isConstantSeen) + { + logger.LogDebug("the isConstant Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isDerivedSeen) + { + logger.LogDebug("the isDerived Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isEndSeen) + { + logger.LogDebug("the isEnd Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isImpliedIncludedSeen) + { + logger.LogDebug("the isImpliedIncluded Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isIndividualSeen) + { + logger.LogDebug("the isIndividual Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isOrderedSeen) + { + logger.LogDebug("the isOrdered Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isPortionSeen) + { + logger.LogDebug("the isPortion Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isSufficientSeen) + { + logger.LogDebug("the isSufficient Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isUniqueSeen) + { + logger.LogDebug("the isUnique Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!isVariationSeen) + { + logger.LogDebug("the isVariation Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!ownedRelationshipSeen) + { + logger.LogDebug("the ownedRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!owningRelationshipSeen) + { + logger.LogDebug("the owningRelationship Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + if (!portionKindSeen) + { + logger.LogDebug("the portionKind Json property was not found in the WhileLoopActionUsage: {Id}", dtoInstance.Id); + } + } + } + } +} + +// ------------------------------------------------------------------------------------------------ +// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!-------- +// ------------------------------------------------------------------------------------------------ diff --git a/SysML2.NET.Serializer.Json/DeSerializeDelegate.cs b/SysML2.NET.Serializer.Json/DeSerializeDelegate.cs new file mode 100644 index 000000000..ad56284d5 --- /dev/null +++ b/SysML2.NET.Serializer.Json/DeSerializeDelegate.cs @@ -0,0 +1,55 @@ +// ------------------------------------------------------------------------------------------------- +// +// +// Copyright 2022-2026 Starion Group S.A. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// ------------------------------------------------------------------------------------------------ + +namespace SysML2.NET.Serializer.Json +{ + using System.Text.Json; + + using Microsoft.Extensions.Logging; + + using SysML2.NET.Common; + + /// + /// Deserializes a single from the provided . + /// + /// + /// The positioned on the of the json + /// object to deserialize. On return the reader is positioned on the matching + /// . + /// + /// + /// The to use. + /// + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored. + /// + /// + /// The used to setup logging. + /// + /// + /// An instance of . + /// + /// + /// A named delegate is required rather than a because + /// cannot express a parameter, and the + /// reader has to be passed by reference so that the caller observes the advanced position. + /// + internal delegate IData DeSerializeDelegate(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, bool deserializeDerivedProperties, ILoggerFactory loggerFactory); +} diff --git a/SysML2.NET.Serializer.Json/DeSerializer.cs b/SysML2.NET.Serializer.Json/DeSerializer.cs index 35d7681ec..914a95ec7 100644 --- a/SysML2.NET.Serializer.Json/DeSerializer.cs +++ b/SysML2.NET.Serializer.Json/DeSerializer.cs @@ -1,245 +1,473 @@ -// ------------------------------------------------------------------------------------------------- -// -// -// Copyright 2022-2025 Starion Group S.A. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// ------------------------------------------------------------------------------------------------ - -namespace SysML2.NET.Serializer.Json -{ - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Runtime.Serialization; - using System.Text.Json; - using System.Threading; - using System.Threading.Tasks; - - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Logging.Abstractions; - - using SysML2.NET.Common; - using SysML2.NET.Serializer.Json.Core.DTO; - using SysML2.NET.Serializer.Json.PIM.DTO; - - /// - /// The purpose of the is to deserialize a JSON to - /// an and - /// - public class DeSerializer : IDeSerializer - { - /// - /// The (injected) used to setup logging - /// - private readonly ILoggerFactory loggerFactory; - - /// - /// The used to log - /// - private readonly ILogger logger; - - /// - /// Initializes a new instance of the class. - /// - /// - /// The (injected) used to setup logging - /// - public DeSerializer(ILoggerFactory loggerFactory = null) - { - this.loggerFactory = loggerFactory; - - this.logger = this.loggerFactory == null ? NullLogger.Instance : this.loggerFactory.CreateLogger(); - } - - /// - /// Deserializes the JSON stream to an - /// - /// - /// the JSON input stream - /// - /// - /// The to use - /// - /// - /// The to use - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// an - /// - public IEnumerable DeSerialize(Stream stream, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) - { - var sw = Stopwatch.StartNew(); - - var result = new List(); - - using (var document = JsonDocument.Parse(stream)) - { - var root = document.RootElement; - - switch (root.ValueKind) - { - case JsonValueKind.Object: - result.Add(this.DeserializeObject(root, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); - break; - case JsonValueKind.Array: - result.AddRange(this.DeserializeArray(root, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); - break; - default: - throw new SerializationException(); - } - } - - this.logger.LogInformation("stream deserialized in {ElapsedTime} [ms]", sw.ElapsedMilliseconds); - - return result; - } - - /// - /// Asynchronously deserializes the JSON stream to an - /// - /// - /// the JSON input stream - /// - /// - /// The to use - /// - /// - /// The to use - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// The used to cancel the operation - /// - /// - /// an - /// - public async Task> DeSerializeAsync(Stream stream, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties, CancellationToken cancellationToken) - { - var sw = Stopwatch.StartNew(); - - var result = new List(); - - var jsonDocumentOptions = default(JsonDocumentOptions); - - using (var document = await JsonDocument.ParseAsync(stream, jsonDocumentOptions, cancellationToken)) - { - var root = document.RootElement; - - switch (root.ValueKind) - { - case JsonValueKind.Object: - result.Add(this.DeserializeObject(root, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); - break; - case JsonValueKind.Array: - result.AddRange(this.DeserializeArray(root, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); - break; - default: - throw new SerializationException(); - } - } - - this.logger.LogInformation("stream deserialized asynchronously in {ElapsedMilliseconds} [ms]", sw.ElapsedMilliseconds); - - return result; - } - - /// - /// Deserializes an of type to an object - /// - /// - /// the subject - /// - /// - /// The to use - /// - /// - /// The to use - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// an instance of - /// - private IData DeserializeObject(JsonElement jsonObject, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) - { - if (jsonObject.ValueKind != JsonValueKind.Object) - { - throw new ArgumentException($"The {nameof(jsonObject)} must be of type JsonValueKind.Object", nameof(jsonObject)); - } - - if (jsonObject.TryGetProperty("@type", out var typeElement)) - { - var typeName = typeElement.GetString(); - - Func func; - - if (serializationTargetKind == SerializationTargetKind.PSM) - { - if (ApiDeSerializationProvider.IsTypeSupported(typeName)) - { - func = ApiDeSerializationProvider.Provide(typeName); - return func(jsonObject, serializationModeKind, deserializeDerivedProperties, this.loggerFactory); - } - else - { - func = DeSerializationProvider.Provide(typeName); - return func(jsonObject, serializationModeKind,deserializeDerivedProperties, this.loggerFactory); - } - } - - func = DeSerializationProvider.Provide(typeName); - return func(jsonObject, serializationModeKind, deserializeDerivedProperties, this.loggerFactory); - } - - throw new SerializationException("The @type Json property is not available, the DeSerializer cannot be used to deserialize this JsonElement"); - } - - /// - /// Deserializes an of type to an object - /// - /// - /// the subject - /// - /// - /// The to use - /// - /// - /// The to use - /// - /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored - /// - /// an - /// - private IEnumerable DeserializeArray(JsonElement jsonArray, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) - { - if (jsonArray.ValueKind != JsonValueKind.Array) - { - throw new ArgumentException($"The {nameof(jsonArray)} must be of type JsonValueKind.Array", nameof(jsonArray)); - } - - var result = new List(); - - foreach (var jsonElement in jsonArray.EnumerateArray()) - { - var dataItem = this.DeserializeObject(jsonElement, serializationModeKind, serializationTargetKind, deserializeDerivedProperties); - result.Add(dataItem); - } - - return result; - } - } -} +// ------------------------------------------------------------------------------------------------- +// +// +// Copyright 2022-2026 Starion Group S.A. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// ------------------------------------------------------------------------------------------------ + +namespace SysML2.NET.Serializer.Json +{ + using System; + using System.Buffers; + using System.Collections.Generic; + using System.Diagnostics; + using System.IO; + using System.Runtime.Serialization; + using System.Text.Json; + using System.Threading; + using System.Threading.Tasks; + + using Microsoft.Extensions.Logging; + using Microsoft.Extensions.Logging.Abstractions; + + using SysML2.NET.Common; + using SysML2.NET.Serializer.Json.Core.DTO; + using SysML2.NET.Serializer.Json.PIM.DTO; + + /// + /// The purpose of the is to deserialize a JSON to + /// an and + /// + /// + /// The JSON payload is read into a pooled buffer and then walked with a that + /// materializes one element at a time. Only the of the element being deserialized + /// is alive at any point, instead of a covering the complete payload. + /// + public class DeSerializer : IDeSerializer + { + /// + /// The size, in bytes, of the buffer that is rented when the length of the input stream is unknown + /// + private const int DefaultBufferSize = 81920; + + /// + /// The maximum length, in bytes, that the pooled input buffer may grow to + /// + private const int MaxBufferLength = 0x7FFFFFC7; + + /// + /// The (injected) used to setup logging + /// + private readonly ILoggerFactory loggerFactory; + + /// + /// The used to log + /// + private readonly ILogger logger; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The (injected) used to setup logging + /// + public DeSerializer(ILoggerFactory loggerFactory = null) + { + this.loggerFactory = loggerFactory; + + this.logger = this.loggerFactory == null ? NullLogger.Instance : this.loggerFactory.CreateLogger(); + } + + /// + /// Deserializes the JSON stream to an + /// + /// + /// the JSON input stream + /// + /// + /// The to use + /// + /// + /// The to use + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// an + /// + public IEnumerable DeSerialize(Stream stream, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) + { + var sw = Stopwatch.StartNew(); + + var buffer = ReadToPooledBuffer(stream, out var length); + + try + { + var result = this.DeSerializeUtf8Json(buffer, length, serializationModeKind, serializationTargetKind, deserializeDerivedProperties); + + this.logger.LogInformation("stream deserialized in {ElapsedTime} [ms]", sw.ElapsedMilliseconds); + + return result; + } + finally + { + ArrayPool.Shared.Return(buffer); + } + } + + /// + /// Asynchronously deserializes the JSON stream to an + /// + /// + /// the JSON input stream + /// + /// + /// The to use + /// + /// + /// The to use + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// The used to cancel the operation + /// + /// + /// an + /// + public async Task> DeSerializeAsync(Stream stream, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties, CancellationToken cancellationToken) + { + var sw = Stopwatch.StartNew(); + + var (buffer, length) = await ReadToPooledBufferAsync(stream, cancellationToken); + + try + { + var result = this.DeSerializeUtf8Json(buffer, length, serializationModeKind, serializationTargetKind, deserializeDerivedProperties); + + this.logger.LogInformation("stream deserialized asynchronously in {ElapsedMilliseconds} [ms]", sw.ElapsedMilliseconds); + + return result; + } + finally + { + ArrayPool.Shared.Return(buffer); + } + } + + /// + /// Deserializes the UTF-8 encoded JSON payload to a + /// + /// + /// the buffer that contains the UTF-8 encoded JSON payload + /// + /// + /// the number of bytes of that make up the payload + /// + /// + /// The to use + /// + /// + /// The to use + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// a + /// + /// + /// No is materialized at any point. Each element is handed to its generated + /// deserializer as a positioned on its , + /// and the deserializer consumes it through to the matching . + /// + private List DeSerializeUtf8Json(byte[] utf8Json, int length, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) + { + var offset = HasUtf8ByteOrderMark(utf8Json, length) ? 3 : 0; + + var reader = new Utf8JsonReader(new ReadOnlySpan(utf8Json, offset, length - offset)); + + var result = new List(); + + if (!reader.Read()) + { + throw new JsonException("The input does not contain any JSON tokens."); + } + + switch (reader.TokenType) + { + case JsonTokenType.StartObject: + result.Add(this.DeserializeObject(ref reader, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); + break; + + case JsonTokenType.StartArray: + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + result.Add(this.DeserializeObject(ref reader, serializationModeKind, serializationTargetKind, deserializeDerivedProperties)); + } + + break; + + default: + throw new SerializationException(); + } + + if (reader.Read()) + { + throw new JsonException("Additional text encountered after the top level JSON value."); + } + + return result; + } + + /// + /// Deserializes the json object that the is positioned on to an object + /// + /// + /// The positioned on the of the json + /// object to deserialize. On return the reader is positioned on the matching + /// + /// + /// The to use + /// + /// + /// The to use + /// + /// Asserts that the deserializer should deserialize derived properties if present or if they are ignored + /// + /// an instance of + /// + private IData DeserializeObject(ref Utf8JsonReader reader, SerializationModeKind serializationModeKind, SerializationTargetKind serializationTargetKind, bool deserializeDerivedProperties) + { + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new ArgumentException($"The {nameof(reader)} must be positioned on a JsonTokenType.StartObject", nameof(reader)); + } + + if (!TryPeekTypeName(reader, out var typeName)) + { + throw new SerializationException("The @type Json property is not available, the DeSerializer cannot be used to deserialize this JsonElement"); + } + + if (serializationTargetKind == SerializationTargetKind.PSM && ApiDeSerializationProvider.IsTypeSupported(typeName)) + { + using var document = JsonDocument.ParseValue(ref reader); + + return ApiDeSerializationProvider.Provide(typeName)(document.RootElement, serializationModeKind, deserializeDerivedProperties, this.loggerFactory); + } + + var func = DeSerializationProvider.Provide(typeName); + + return func(ref reader, serializationModeKind, deserializeDerivedProperties, this.loggerFactory); + } + + /// + /// Reads ahead for the @type discriminator of the json object that the reader is positioned on + /// + /// + /// A copy of the , positioned on the + /// of the json object + /// + /// + /// The value of the @type property, which is null when the property is present but null + /// + /// + /// true when the object carries a @type property, false otherwise + /// + /// + /// Thrown when the @type property is neither a string nor null + /// + /// + /// The reader is taken by value on purpose: is a struct, so the copy is a + /// free snapshot and the caller's reader stays parked on the . + /// The SysML v2 API does not guarantee that @type comes first — it is the first property of the + /// elements payload but the second of the projects payload — so the scan has to tolerate any position. + /// + private static bool TryPeekTypeName(Utf8JsonReader reader, out string typeName) + { + typeName = null; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.ValueTextEquals("@type"u8)) + { + reader.Read(); + + if (reader.TokenType == JsonTokenType.Null) + { + return true; + } + + if (reader.TokenType != JsonTokenType.String) + { + throw new InvalidOperationException($"The requested operation requires an element of type 'String', but the target element has type '{reader.TokenType}'."); + } + + typeName = reader.GetString(); + + return true; + } + + reader.Read(); + reader.Skip(); + } + + return false; + } + + /// + /// Reads the complete into a buffer rented from the + /// + /// + /// the JSON input stream + /// + /// + /// the number of bytes that were read from the + /// + /// + /// the rented buffer, which the caller is responsible for returning to the + /// + private static byte[] ReadToPooledBuffer(Stream stream, out int length) + { + var buffer = ArrayPool.Shared.Rent(ComputeInitialBufferLength(stream)); + var total = 0; + + while (true) + { + if (total == buffer.Length) + { + buffer = Grow(buffer, total); + } + + var read = stream.Read(buffer, total, buffer.Length - total); + + if (read == 0) + { + break; + } + + total += read; + } + + length = total; + + return buffer; + } + + /// + /// Asynchronously reads the complete into a buffer rented from the + /// + /// + /// the JSON input stream + /// + /// + /// The used to cancel the operation + /// + /// + /// the rented buffer, which the caller is responsible for returning to the , and + /// the number of bytes that were read from the + /// + private static async Task<(byte[] Buffer, int Length)> ReadToPooledBufferAsync(Stream stream, CancellationToken cancellationToken) + { + var buffer = ArrayPool.Shared.Rent(ComputeInitialBufferLength(stream)); + var total = 0; + + while (true) + { + if (total == buffer.Length) + { + buffer = Grow(buffer, total); + } + + var read = await stream.ReadAsync(buffer.AsMemory(total, buffer.Length - total), cancellationToken); + + if (read == 0) + { + break; + } + + total += read; + } + + return (buffer, total); + } + + /// + /// Computes the length of the buffer to rent for the provided + /// + /// + /// the JSON input stream + /// + /// + /// the length of the buffer to rent + /// + /// + /// One byte more than the remaining length is requested so that the read loop observes the end of the + /// stream without having to grow the buffer. + /// + private static int ComputeInitialBufferLength(Stream stream) + { + if (!stream.CanSeek) + { + return DefaultBufferSize; + } + + var remaining = stream.Length - stream.Position; + + return remaining <= 0 || remaining >= MaxBufferLength ? DefaultBufferSize : (int)remaining + 1; + } + + /// + /// Replaces the provided buffer with a larger one rented from the + /// + /// + /// the buffer that is full and needs to be replaced + /// + /// + /// the number of bytes of that need to be preserved + /// + /// + /// the larger buffer, which contains the first bytes of + /// + /// + /// Thrown when the buffer cannot grow any further + /// + private static byte[] Grow(byte[] buffer, int count) + { + if (buffer.Length >= MaxBufferLength) + { + throw new SerializationException("The JSON payload exceeds the maximum length that can be deserialized."); + } + + var grownLength = buffer.Length >= MaxBufferLength / 2 ? MaxBufferLength : buffer.Length * 2; + + var grown = ArrayPool.Shared.Rent(grownLength); + + Buffer.BlockCopy(buffer, 0, grown, 0, count); + + ArrayPool.Shared.Return(buffer); + + return grown; + } + + /// + /// Asserts whether the payload starts with a UTF-8 byte order mark + /// + /// + /// the buffer that contains the UTF-8 encoded JSON payload + /// + /// + /// the number of bytes of that make up the payload + /// + /// + /// true when the payload starts with a UTF-8 byte order mark, false otherwise + /// + /// + /// does not skip a byte order mark, whereas does. + /// + private static bool HasUtf8ByteOrderMark(byte[] utf8Json, int length) + { + return length >= 3 && utf8Json[0] == 0xEF && utf8Json[1] == 0xBB && utf8Json[2] == 0xBF; + } + } +} diff --git a/SysML2.NET.Serializer.Json/PIM/DataVersionDeSerializer.cs b/SysML2.NET.Serializer.Json/PIM/DataVersionDeSerializer.cs index 106b697df..1e1d67f30 100644 --- a/SysML2.NET.Serializer.Json/PIM/DataVersionDeSerializer.cs +++ b/SysML2.NET.Serializer.Json/PIM/DataVersionDeSerializer.cs @@ -21,6 +21,7 @@ namespace SysML2.NET.Serializer.Json.PIM.DTO { using System; + using System.Text; using System.Text.Json; using Microsoft.Extensions.Logging; @@ -122,7 +123,13 @@ internal static DataVersion DeSerialize(JsonElement jsonElement, SerializationMo var typeName = typeElement.GetString(); var func = DeSerializationProvider.Provide(typeName); - dtoInstance.Payload = func(payloadObject, serializationModeKind,deserializeDerivedProperties, loggerFactory); + + // the core deserializers read straight from the utf-8 payload, so the nested element is + // re-encoded to hand them a reader positioned on its opening brace + var payloadReader = new Utf8JsonReader(Encoding.UTF8.GetBytes(payloadObject.GetRawText())); + payloadReader.Read(); + + dtoInstance.Payload = func(ref payloadReader, serializationModeKind, deserializeDerivedProperties, loggerFactory); } } else diff --git a/SysML2.NET.Serializer.Json/SysML2.NET.Serializer.Json.csproj b/SysML2.NET.Serializer.Json/SysML2.NET.Serializer.Json.csproj index 8f9acddaf..57bdb36ff 100644 --- a/SysML2.NET.Serializer.Json/SysML2.NET.Serializer.Json.csproj +++ b/SysML2.NET.Serializer.Json/SysML2.NET.Serializer.Json.csproj @@ -14,6 +14,7 @@ Sam Gerené true + [Update] Deserialization performance (#352) — the deserializers now read straight from a Utf8JsonReader and no JsonDocument is materialised at any point, Guids are read from the UTF-8 bytes, and the redundant @type re-validation was dropped. Roughly twice as fast with half the allocation on a 100k element payload. Deserialized content is unchanged. [Update] Deserializers regenerated from updated UML abstract syntax model (#285) — covers AcceptActionUsage, ActionUsage, AnalysisCaseUsage, AssignmentActionUsage, CalculationUsage, CaseUsage, DecisionNode, ExhibitStateUsage, FlowUsage, ForLoopActionUsage, ForkNode, IfActionUsage, IncludeUseCaseUsage, JoinNode, MergeNode, MetadataUsage, PerformActionUsage, SendActionUsage, StateUsage, SuccessionFlowUsage, TerminateActionUsage, TransitionUsage, UseCaseUsage, VerificationCaseUsage, WhileLoopActionUsage [Update] Aligned with SysML2.NET.Extensions 0.22.0 diff --git a/SysML2.NET.Serializer.Json/Utility/Utf8JsonReaderHelper.cs b/SysML2.NET.Serializer.Json/Utility/Utf8JsonReaderHelper.cs index 096b9fdc1..132b2bf92 100644 --- a/SysML2.NET.Serializer.Json/Utility/Utf8JsonReaderHelper.cs +++ b/SysML2.NET.Serializer.Json/Utility/Utf8JsonReaderHelper.cs @@ -167,5 +167,108 @@ public static Uri ReadUriOrNull(ref Utf8JsonReader reader) /// while remaining forward-compatible with newer schema versions. /// public static void SkipValue(ref Utf8JsonReader reader) => reader.Skip(); + + /// + /// Reads the current JSON value as a . + /// + /// + /// The positioned on the value token. + /// + /// + /// The that the current value represents. + /// + /// + /// Thrown when the current token is not a . + /// + /// + /// Thrown when the string value is not a recognized representation. + /// + /// + /// parses the 16 bytes straight out of the UTF-8 + /// payload and only recognizes the hyphenated "D" format that the SysML v2 API emits. The + /// fall-back preserves support for the remaining formats at the cost + /// of transcoding the value, so that no payload that used to deserialize starts failing. + /// + public static Guid ReadGuid(ref Utf8JsonReader reader) + { + return reader.TryGetGuid(out var value) ? value : Guid.Parse(reader.GetString()); + } + + /// + /// Reads a reference value, which the SysML v2 JSON representation writes either as + /// null or as an object carrying a single @id property. + /// + /// + /// The positioned on the value token. On return the reader is + /// positioned on the last token of that value, so that the caller's loop advances normally. + /// + /// + /// The identifier that the reference carries, or when the method returns + /// . + /// + /// + /// when an @id was read, when the reference is + /// null or carries no non-null @id. + /// + /// + /// Thrown when the value is neither an object nor null, mirroring what + /// does for a + /// non-object element. + /// + public static bool TryReadReferenceIdentifier(ref Utf8JsonReader reader, out Guid value) + { + value = Guid.Empty; + + if (reader.TokenType == JsonTokenType.Null) + { + return false; + } + + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new InvalidOperationException($"The requested operation requires an element of type 'Object', but the target element has type '{reader.TokenType}'."); + } + + var found = false; + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (!found && reader.ValueTextEquals("@id"u8)) + { + reader.Read(); + + if (reader.TokenType != JsonTokenType.Null) + { + value = ReadGuid(ref reader); + found = true; + } + + continue; + } + + reader.Read(); + reader.Skip(); + } + + return found; + } + + /// + /// Asserts that the reader is positioned on the start of an array. + /// + /// + /// The positioned on the value token. + /// + /// + /// Thrown when the current token is not , mirroring what + /// does for a non-array element. + /// + public static void ExpectArrayStart(ref Utf8JsonReader reader) + { + if (reader.TokenType != JsonTokenType.StartArray) + { + throw new InvalidOperationException($"The requested operation requires an element of type 'Array', but the target element has type '{reader.TokenType}'."); + } + } } } From 53dc08f2aeee9ff7b792b869bd24e4c6bbdc6f06 Mon Sep 17 00:00:00 2001 From: atheate Date: Wed, 26 Aug 2026 09:26:55 +0200 Subject: [PATCH 2/2] Verification of grow mechanism --- .../DeSerializerTestFixture.cs | 120 ++++++++++++++++-- SysML2.NET.Serializer.Json/DeSerializer.cs | 6 +- 2 files changed, 111 insertions(+), 15 deletions(-) diff --git a/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs b/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs index 945c3b0e5..65df7cc89 100644 --- a/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs +++ b/SysML2.NET.Serializer.Json.Tests/DeSerializerTestFixture.cs @@ -54,6 +54,15 @@ public class DeSerializerTestFixture /// private static readonly Guid ElementIdentifier = Guid.Parse("00a6ef10-d3dc-4741-9029-2c9978c2f083"); + /// + /// The number of elements of the payload that forces the pooled input buffer to grow + /// + /// + /// Each element serializes to roughly 130 bytes, so 4000 of them is about 520 kB. A non seekable + /// stream starts on an 81 920 byte buffer, which therefore has to double three times. + /// + private const int LargePayloadElementCount = 4000; + private DeSerializer deSerializer; [SetUp] @@ -279,6 +288,16 @@ public void VerifyDeSerialize() Assert.That(feature.Id, Is.EqualTo(ElementIdentifier)); Assert.That(feature.ElementId, Is.EqualTo("00a6ef10-d3dc-4741-9029-2c9978c2f083")); } + + var grown = this.DeSerializeJson(CreateLargePayload(LargePayloadElementCount), dribble: true, chunkSize: 8192); + + using (Assert.EnterMultipleScope()) + { + Assert.That(grown, Has.Count.EqualTo(LargePayloadElementCount)); + Assert.That(grown[0].Id, Is.EqualTo(LargePayloadIdentifier(0)), "the first element survives the buffer growth"); + Assert.That(grown[^1].Id, Is.EqualTo(LargePayloadIdentifier(LargePayloadElementCount - 1)), "the last element survives the buffer growth"); + Assert.That(((IFeature)grown[LargePayloadElementCount / 2]).ElementId, Is.EqualTo(LargePayloadIdentifier(LargePayloadElementCount / 2).ToString()), "an element spanning a growth boundary is not corrupted"); + } } [Test] @@ -295,6 +314,7 @@ public async Task VerifyDeSerializeAsync() var singleObject = await this.DeSerializeJsonAsync(Element); var byteOrderMark = await this.DeSerializeJsonAsync($"[{Element}]"); var dribbled = await this.DeSerializeJsonAsync($"[{Element}]", dribble: true); + var grown = await this.DeSerializeJsonAsync(CreateLargePayload(LargePayloadElementCount), dribble: true, chunkSize: 8192); using (Assert.EnterMultipleScope()) { @@ -304,6 +324,8 @@ public async Task VerifyDeSerializeAsync() Assert.That(byteOrderMark, Has.Count.EqualTo(1), "utf-8 byte order mark"); Assert.That(dribbled, Has.Count.EqualTo(1), "non seekable stream that dribbles bytes"); Assert.That(((IFeature)arrayRoot[0]).Id, Is.EqualTo(ElementIdentifier)); + Assert.That(grown, Has.Count.EqualTo(LargePayloadElementCount), "payload larger than the initial buffer"); + Assert.That(grown[^1].Id, Is.EqualTo(LargePayloadIdentifier(LargePayloadElementCount - 1)), "the last element survives the buffer growth"); } } @@ -314,14 +336,17 @@ public async Task VerifyDeSerializeAsync() /// the json to deserialize /// /// - /// when true the json is presented through a non seekable stream that yields a single byte per read + /// when true the json is presented through a non seekable stream + /// + /// + /// the number of bytes that the non seekable stream yields per read /// /// /// the deserialized items /// - private List DeSerializeJson(string json, bool dribble = false) + private List DeSerializeJson(string json, bool dribble = false, int chunkSize = 1) { - using var stream = CreateStream(json, dribble); + using var stream = CreateStream(json, dribble, chunkSize); return this.deSerializer.DeSerialize(stream, SerializationModeKind.JSON, SerializationTargetKind.CORE, false).ToList(); } @@ -333,14 +358,17 @@ private List DeSerializeJson(string json, bool dribble = false) /// the json to deserialize /// /// - /// when true the json is presented through a non seekable stream that yields a single byte per read + /// when true the json is presented through a non seekable stream + /// + /// + /// the number of bytes that the non seekable stream yields per read /// /// /// the deserialized items /// - private async Task> DeSerializeJsonAsync(string json, bool dribble = false) + private async Task> DeSerializeJsonAsync(string json, bool dribble = false, int chunkSize = 1) { - await using var stream = CreateStream(json, dribble); + await using var stream = CreateStream(json, dribble, chunkSize); var data = await this.deSerializer.DeSerializeAsync(stream, SerializationModeKind.JSON, SerializationTargetKind.CORE, false, CancellationToken.None); @@ -354,16 +382,71 @@ private async Task> DeSerializeJsonAsync(string json, bool dribble = /// the json that the stream exposes /// /// - /// when true a non seekable stream that yields a single byte per read is returned + /// when true a non seekable stream is returned + /// + /// + /// the number of bytes that the non seekable stream yields per read /// /// /// the input /// - private static Stream CreateStream(string json, bool dribble) + private static Stream CreateStream(string json, bool dribble, int chunkSize) { var bytes = new UTF8Encoding(false).GetBytes(json); - return dribble ? new DribblingStream(bytes) : new MemoryStream(bytes, false); + return dribble ? new DribblingStream(bytes, chunkSize) : new MemoryStream(bytes, false); + } + + /// + /// Builds a json array of distinct elements + /// + /// + /// the number of elements the array carries + /// + /// + /// the json payload + /// + /// + /// Every element carries its own identifier so that a payload that was assembled across several + /// growths of the pooled input buffer can be shown to be free of corruption, rather than merely + /// having the expected number of elements. + /// + private static string CreateLargePayload(int elementCount) + { + var builder = new StringBuilder(); + + builder.Append('['); + + for (var elementIndex = 0; elementIndex < elementCount; elementIndex++) + { + if (elementIndex > 0) + { + builder.Append(','); + } + + var identifier = LargePayloadIdentifier(elementIndex); + + builder.Append("{\"@type\":\"Feature\",\"@id\":\"").Append(identifier).Append("\",\"elementId\":\"").Append(identifier).Append("\"}"); + } + + builder.Append(']'); + + return builder.ToString(); + } + + /// + /// Computes the identifier that the element at of the payload built by + /// carries + /// + /// + /// the index of the element + /// + /// + /// the identifier of the element + /// + private static Guid LargePayloadIdentifier(int elementIndex) + { + return new Guid(elementIndex, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } /// @@ -377,6 +460,11 @@ private sealed class DribblingStream : Stream /// private readonly byte[] bytes; + /// + /// The number of bytes yielded per read + /// + private readonly int chunkSize; + /// /// The index of the next byte to yield /// @@ -388,9 +476,13 @@ private sealed class DribblingStream : Stream /// /// The bytes that the stream exposes /// - public DribblingStream(byte[] bytes) + /// + /// The number of bytes yielded per read + /// + public DribblingStream(byte[] bytes, int chunkSize) { this.bytes = bytes; + this.chunkSize = chunkSize; } /// @@ -425,9 +517,13 @@ public override int Read(byte[] buffer, int offset, int count) return 0; } - buffer[offset] = this.bytes[this.index++]; + var read = Math.Min(Math.Min(this.chunkSize, count), this.bytes.Length - this.index); + + Buffer.BlockCopy(this.bytes, this.index, buffer, offset, read); + + this.index += read; - return 1; + return read; } /// diff --git a/SysML2.NET.Serializer.Json/DeSerializer.cs b/SysML2.NET.Serializer.Json/DeSerializer.cs index 914a95ec7..613dba098 100644 --- a/SysML2.NET.Serializer.Json/DeSerializer.cs +++ b/SysML2.NET.Serializer.Json/DeSerializer.cs @@ -42,9 +42,9 @@ namespace SysML2.NET.Serializer.Json /// an and /// /// - /// The JSON payload is read into a pooled buffer and then walked with a that - /// materializes one element at a time. Only the of the element being deserialized - /// is alive at any point, instead of a covering the complete payload. + /// The JSON payload is read into a pooled buffer and then walked with a . No + /// is materialized for the core payload at any point; each element is handed to + /// its generated deserializer as a reader positioned on its opening brace. /// public class DeSerializer : IDeSerializer {